|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace Home\Controller;
|
|
|
|
|
|
|
|
|
|
use OT\DataDictionary;
|
|
|
|
|
use User\Api\PromoteApi;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 前台首页控制器
|
|
|
|
|
* 主要获取首页聚合数据
|
|
|
|
|
*/
|
|
|
|
|
class QueryController extends BaseController
|
|
|
|
|
{
|
|
|
|
|
public function recharge($p = 0)
|
|
|
|
|
{
|
|
|
|
|
$pro_id = get_prmoote_chlid_account(session('promote_auth.pid'));
|
|
|
|
|
foreach ($pro_id as $key => $value) {
|
|
|
|
|
$pro_id1[] = $value['id'];
|
|
|
|
|
}
|
|
|
|
|
if (!empty($pro_id1)) {
|
|
|
|
|
$pro_id2 = array_merge($pro_id1, array(get_pid()));
|
|
|
|
|
} else {
|
|
|
|
|
$pro_id2 = array(get_pid());
|
|
|
|
|
}
|
|
|
|
|
// $map['promote_id'] = array('in', $pro_id2);
|
|
|
|
|
|
|
|
|
|
if ($_REQUEST['user_account'] == '%') {
|
|
|
|
|
$map['user_account'] = array('like', '%\\' . $_REQUEST['user_account'] . '%');
|
|
|
|
|
unset($_REQUEST['user_account']);
|
|
|
|
|
} elseif ($_REQUEST['user_account'] == 0) {
|
|
|
|
|
$map['user_account'] = array('like', '%' . $_REQUEST['user_account'] . '%');
|
|
|
|
|
unset($_REQUEST['user_account']);
|
|
|
|
|
} elseif (isset($_REQUEST['user_account']) && trim($_REQUEST['user_account'])) {
|
|
|
|
|
$map['user_account'] = array('like', '%' . $_REQUEST['user_account'] . '%');
|
|
|
|
|
unset($_REQUEST['user_account']);
|
|
|
|
|
}
|
|
|
|
|
if (isset($_REQUEST['game_appid']) && $_REQUEST['game_appid'] != '' && $_REQUEST['game_appid'] != 0) {
|
|
|
|
|
$map['game_id'] = $_REQUEST['game_appid'];
|
|
|
|
|
}
|
|
|
|
|
if ($_REQUEST['promote_id'] > 0) {
|
|
|
|
|
if (PID == $_REQUEST['promote_id']) {
|
|
|
|
|
$map['promote_id'] = PID;
|
|
|
|
|
} else {
|
|
|
|
|
$pro_id1 = get_prmoote_chlid_account($_REQUEST['promote_id']);
|
|
|
|
|
$pro_arr = array_column($pro_id1, 'id');
|
|
|
|
|
$pro_arr[] = $_REQUEST['promote_id'];
|
|
|
|
|
$map['promote_id'] = array('in', $pro_arr);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['order_number']) && trim($_REQUEST['order_number'])) {
|
|
|
|
|
$map['pay_order_number'] = array('like', '%' . $_REQUEST['order_number'] . '%');
|
|
|
|
|
unset($_REQUEST['order_number']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!empty($_REQUEST['time_start']) || !empty($_REQUEST['time_end'])) {
|
|
|
|
|
$map['pay_time'] = array('BETWEEN', array(strtotime($_REQUEST['time_start']), $_REQUEST['time_end'] == '' ? time() : strtotime($_REQUEST['time_end']) + 24 * 60 * 60 - 1));
|
|
|
|
|
unset($_REQUEST['time_start']);
|
|
|
|
|
unset($_REQUEST['time_end']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (I('request.version', 1) == 1) {
|
|
|
|
|
$map['pay_way'] = array('neq', -1);
|
|
|
|
|
} else {
|
|
|
|
|
$map['pay_way'] = array('eq', -1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['sdk_version']) && trim($_REQUEST['sdk_version'])) {
|
|
|
|
|
$map['sdk_version'] = (int)$_REQUEST['sdk_version'];
|
|
|
|
|
unset($_REQUEST['sdk_version']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$map['pay_status'] = 1;
|
|
|
|
|
$map['is_check'] = array('neq', 2);
|
|
|
|
|
$total1 = M('spend', "tab_")->where($map)->sum('pay_amount');
|
|
|
|
|
$total2 = M('spend', "tab_")->where($map)->sum('cost');
|
|
|
|
|
$this->assign("total_amount", $total1);
|
|
|
|
|
$this->assign("total_cost", $total2);
|
|
|
|
|
$this->meta_title = "用户充值";
|
|
|
|
|
$this->lists("Spend", $p, $map);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function register($p = 0)
|
|
|
|
|
{
|
|
|
|
|
$page = intval($p);
|
|
|
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
|
|
|
$row = 10;
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['row'])) {
|
|
|
|
|
$row = $_REQUEST['row'];
|
|
|
|
|
} else {
|
|
|
|
|
$row = 10;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($_REQUEST['promote_id'] > 0) {
|
|
|
|
|
if (PID == $_REQUEST['promote_id']) {
|
|
|
|
|
$map['tab_user.promote_id'] = $_REQUEST['promote_id'];
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
$pro_id = get_prmoote_chlid_account($_REQUEST['promote_id']);
|
|
|
|
|
foreach ($pro_id as $key => $value) {
|
|
|
|
|
$pro_id1[] = $value['id'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!empty($pro_id1)) {
|
|
|
|
|
$pro_id2 = array_merge($pro_id1, [$_REQUEST['promote_id']]);
|
|
|
|
|
} else {
|
|
|
|
|
$pro_id2 = $_REQUEST['promote_id'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$map['tab_user.promote_id'] = array('in', $pro_id2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
$pro_id = get_prmoote_chlid_account(session('promote_auth.pid'));
|
|
|
|
|
foreach ($pro_id as $key => $value) {
|
|
|
|
|
$pro_id1[] = $value['id'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!empty($pro_id1)) {
|
|
|
|
|
$pro_id2 = array_merge($pro_id1, array(get_pid()));
|
|
|
|
|
} else {
|
|
|
|
|
$pro_id2 = array(get_pid());
|
|
|
|
|
}
|
|
|
|
|
$map['tab_user.promote_id'] = array('in', $pro_id2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($_REQUEST['user_account'] == '%') {
|
|
|
|
|
$map['tab_user.account'] = array('like', '%\\' . $_REQUEST['user_account'] . '%');
|
|
|
|
|
} elseif (isset($_REQUEST['user_account']) && $_REQUEST['user_account'] == 0) {
|
|
|
|
|
$map['tab_user.account'] = array('like', '%' . $_REQUEST['user_account'] . '%');
|
|
|
|
|
} elseif (isset($_REQUEST['user_account']) && trim($_REQUEST['user_account'])) {
|
|
|
|
|
$map['tab_user.account'] = array('like', '%' . $_REQUEST['user_account'] . '%');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['game_appid']) && $_REQUEST['game_appid'] != 0) {
|
|
|
|
|
$map['tab_user.fgame_id'] = $_REQUEST['game_appid'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['sdk_version']) && (int)$_REQUEST['sdk_version'] > 0) {
|
|
|
|
|
$map['tab_user_play.sdk_version'] = (int)$_REQUEST['sdk_version'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!empty($_REQUEST['time_start']) && !empty($_REQUEST['time_end'])) {
|
|
|
|
|
$map['tab_user.register_time'] = array('BETWEEN', array(strtotime($_REQUEST['time_start']), strtotime($_REQUEST['time_end']) + 24 * 60 * 60 - 1));
|
|
|
|
|
} elseif (!empty($_REQUEST['time_start']) && empty($_REQUEST['time_end'])) {
|
|
|
|
|
$map['tab_user.register_time'] = array('egt', strtotime($_REQUEST['time_start']));
|
|
|
|
|
} elseif (empty($_REQUEST['time_start']) && !empty($_REQUEST['time_end'])) {
|
|
|
|
|
$map['tab_user.register_time'] = array('elt', strtotime($_REQUEST['time_end']) + 24 * 60 * 60 - 1);
|
|
|
|
|
}
|
|
|
|
|
if (!empty($_REQUEST['start']) && !empty($_REQUEST['end'])) {
|
|
|
|
|
$map['tab_user.register_time'] = array('BETWEEN', array(strtotime($_REQUEST['start']), strtotime($_REQUEST['end']) + 24 * 60 * 60 - 1));
|
|
|
|
|
}
|
|
|
|
|
$map['tab_user.is_check'] = array('neq', 2);
|
|
|
|
|
|
|
|
|
|
$map['tab_user.puid'] = 0;
|
|
|
|
|
|
|
|
|
|
$data = D('User')
|
|
|
|
|
->field('tab_user.*,tab_user_play.server_name,tab_user_play.sdk_version')
|
|
|
|
|
->join('left join tab_user_play on tab_user.id = tab_user_play.user_id')
|
|
|
|
|
->where('tab_user.fgame_id = tab_user_play.game_id or tab_user.fgame_id is null')
|
|
|
|
|
->where($map)
|
|
|
|
|
->order('tab_user.id desc')
|
|
|
|
|
->group('tab_user.account')
|
|
|
|
|
->page($page, $row)
|
|
|
|
|
->select();
|
|
|
|
|
$count = count($data);
|
|
|
|
|
|
|
|
|
|
$parameter = $_REQUEST;
|
|
|
|
|
$parameter['p'] = I('get.p', 1);
|
|
|
|
|
$parameter['row'] = I('get.row');
|
|
|
|
|
|
|
|
|
|
$page = set_pagination($count, $row, $parameter);
|
|
|
|
|
if ($page) {
|
|
|
|
|
$this->assign('_page', $page);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->assign('p', $page);
|
|
|
|
|
$this->assign('count', $count);
|
|
|
|
|
$this->assign('list_data', $data);
|
|
|
|
|
$this->meta_title = '注册明细';
|
|
|
|
|
|
|
|
|
|
$this->display();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*我的对账单
|
|
|
|
|
*/
|
|
|
|
|
public function bill()
|
|
|
|
|
{
|
|
|
|
|
$map['promote_id'] = get_pid();
|
|
|
|
|
if (isset($_REQUEST['bill_number']) && !empty($_REQUEST['bill_number'])) {
|
|
|
|
|
$map['bill_number'] = $_REQUEST['bill_number'];
|
|
|
|
|
}
|
|
|
|
|
if (isset($_REQUEST['game_id']) && !empty($_REQUEST['game_id'])) {
|
|
|
|
|
$map['game_id'] = $_REQUEST['game_id'];
|
|
|
|
|
}
|
|
|
|
|
if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
|
|
|
$map['bill_start_time'] = array('egt', strtotime($_REQUEST['timestart']));
|
|
|
|
|
$map['bill_end_time'] = array('elt', strtotime($_REQUEST['timeend']) + 24 * 3600 - 1);
|
|
|
|
|
}
|
|
|
|
|
$model = array(
|
|
|
|
|
'm_name' => 'bill',
|
|
|
|
|
'map' => $map,
|
|
|
|
|
'template_list' => 'bill',
|
|
|
|
|
'title' => '我的对账单',
|
|
|
|
|
);
|
|
|
|
|
$user = A('User', 'Event');
|
|
|
|
|
$user->bill_list($model, $_GET['p']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*我的结算
|
|
|
|
|
*/
|
|
|
|
|
public function my_earning($p = 1)
|
|
|
|
|
{
|
|
|
|
|
$pro_map['id'] = get_pid();
|
|
|
|
|
$pro = M("promote", "tab_")->where($pro_map)->find();
|
|
|
|
|
$map['promote_id'] = get_pid();
|
|
|
|
|
if ($pro['parent_id'] == 0) {
|
|
|
|
|
if (isset($_REQUEST['settlement_number']) && !empty($_REQUEST['settlement_number'])) {
|
|
|
|
|
$map['settlement_number'] = ['like', '%' . $_REQUEST['settlement_number'] . '%'];
|
|
|
|
|
}
|
|
|
|
|
if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
|
|
|
/*$map['bill_start_time'] = array('egt',strtotime($_REQUEST['timestart']));
|
|
|
|
|
$map['bill_end_time'] = array('elt',strtotime($_REQUEST['timeend'])+24*3600-1);*/
|
|
|
|
|
$map['starttime'] = array('egt', strtotime($_REQUEST['timestart']));
|
|
|
|
|
$map['endtime'] = array('elt', strtotime($_REQUEST['timeend']) + 24 * 3600 - 1);
|
|
|
|
|
} elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) {
|
|
|
|
|
$map['starttime'] = array('egt', strtotime($_REQUEST['timestart']));
|
|
|
|
|
} elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
|
|
|
$map['endtime'] = array('elt', strtotime($_REQUEST['timeend']) + 24 * 3600 - 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$model = array(
|
|
|
|
|
'm_name' => 'TotalSettlement',
|
|
|
|
|
'map' => $map,
|
|
|
|
|
'fields' => true,
|
|
|
|
|
'order' => 'create_time desc ',
|
|
|
|
|
'template_list' => 'my_earning',
|
|
|
|
|
'title' => '我的结算',
|
|
|
|
|
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['settlement_number']) && !empty($_REQUEST['settlement_number'])) {
|
|
|
|
|
$map['settlement_number'] = ['like', '%' . $_REQUEST['settlement_number'] . '%'];
|
|
|
|
|
}
|
|
|
|
|
if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
|
|
|
$map['settlement_start_time'] = array('egt', strtotime($_REQUEST['timestart']));
|
|
|
|
|
$map['settlement_end_time'] = array('elt', strtotime($_REQUEST['timeend']) + 24 * 3600 - 1);
|
|
|
|
|
} elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) {
|
|
|
|
|
$map['settlement_start_time'] = array('egt', strtotime($_REQUEST['timestart']));
|
|
|
|
|
} elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
|
|
|
$map['settlement_end_time'] = array('elt', strtotime($_REQUEST['timeend']) + 24 * 3600 - 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$model = array(
|
|
|
|
|
'm_name' => 'son_settlement',
|
|
|
|
|
'fields' => 'settlement_number,settlement_start_time,create_time,
|
|
|
|
|
settlement_end_time,game_id,game_name,promote_id,
|
|
|
|
|
promote_account,pattern,bind_coin_status,floor(sum(sum_money*100))/100 as sum_money,
|
|
|
|
|
sum(reg_number) as reg_number,ratio,money,floor(sum(jie_money*100))/100 as jie_money,status,ti_status',
|
|
|
|
|
'map' => $map,
|
|
|
|
|
'template_list' => 'my_earning_sub',
|
|
|
|
|
'order' => 'create_time desc',
|
|
|
|
|
'group' => 'settlement_number, create_time',
|
|
|
|
|
'title' => '我的结算',
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
$user = A('User', 'Event');
|
|
|
|
|
$this->assign("parent_id", $pro['parent_id']);
|
|
|
|
|
$user->shou_list($model, $p);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*子渠道结算单
|
|
|
|
|
*/
|
|
|
|
|
public function son_earning_($p = 1)
|
|
|
|
|
{
|
|
|
|
|
if (PLEVEL == 0) {
|
|
|
|
|
if (isset($_REQUEST['timestart']) && isset($_REQUEST['timeend']) && !empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
|
|
|
$starttime = strtotime($_REQUEST['timestart']);
|
|
|
|
|
$endtime = strtotime($_REQUEST['timeend']) + 24 * 60 * 60 - 1;
|
|
|
|
|
$this->assign('starttime', $starttime);
|
|
|
|
|
$this->assign('endtime', $endtime);
|
|
|
|
|
$map[0]['register_time'] = array('BETWEEN', array($starttime, $endtime));
|
|
|
|
|
$map[1]['pay_time'] = array('BETWEEN', array($starttime, $endtime));
|
|
|
|
|
unset($_REQUEST['timestart']);
|
|
|
|
|
unset($_REQUEST['timeend']);
|
|
|
|
|
|
|
|
|
|
$map[1]['parent_id'] = $map[0]['u.parent_id'] = PID;
|
|
|
|
|
if (isset($_REQUEST['ch_promote_id']) && !empty($_REQUEST['ch_promote_id'])) {
|
|
|
|
|
$map[1]['s.promote_id'] = $map[0]['u.promote_id'] = $_REQUEST['ch_promote_id'];
|
|
|
|
|
}
|
|
|
|
|
$model = array(
|
|
|
|
|
'title' => '子渠道结算单',
|
|
|
|
|
'template_list' => 'son_earning',
|
|
|
|
|
);
|
|
|
|
|
$user = A('User', 'Event');
|
|
|
|
|
$user->check_bill($model, $p, $map);
|
|
|
|
|
} else {
|
|
|
|
|
$this->display();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$model = array(
|
|
|
|
|
'm_name' => 'SonSettlement',
|
|
|
|
|
'order' => 'id ',
|
|
|
|
|
'title' => '结算账单',
|
|
|
|
|
'template_list' => 'son_earning',
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$user = A('User', 'Event');
|
|
|
|
|
$user->money_list($model, $p);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//子渠道结算单
|
|
|
|
|
public function son_list($p = 0)
|
|
|
|
|
{
|
|
|
|
|
if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
|
|
|
$map['settlement_start_time'] = array('egt', strtotime($_REQUEST['timestart']));
|
|
|
|
|
$map['settlement_end_time'] = array('elt', strtotime($_REQUEST['timeend']) + 86399);
|
|
|
|
|
} elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) {
|
|
|
|
|
$map['settlement_start_time'] = array('egt', strtotime($_REQUEST['timestart']));
|
|
|
|
|
$map['settlement_end_time'] = array('elt', time());
|
|
|
|
|
} elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
|
|
|
$map['settlement_end_time'] = array('elt', strtotime($_REQUEST['timeend']) + 86399);
|
|
|
|
|
}
|
|
|
|
|
if (!empty($_REQUEST['start']) && !empty($_REQUEST['end'])) {
|
|
|
|
|
$start = strtotime($_REQUEST['start']);
|
|
|
|
|
$end = strtotime($_REQUEST['end']) + 86399;
|
|
|
|
|
$map['create_time'] = array('BETWEEN', array($start, $end));
|
|
|
|
|
} elseif (!empty($_REQUEST['start']) && empty($_REQUEST['end'])) {
|
|
|
|
|
$start = strtotime($_REQUEST['start']);
|
|
|
|
|
$end = time();
|
|
|
|
|
$map['create_time'] = array('BETWEEN', array($start, $end));
|
|
|
|
|
} elseif (empty($_REQUEST['start']) && !empty($_REQUEST['end'])) {
|
|
|
|
|
$end = strtotime($_REQUEST['end']) + 86399;
|
|
|
|
|
$map['create_time'] = array('elt', $end);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!empty($_REQUEST['ch_promote_id'])) {
|
|
|
|
|
$map['promote_id'] = $_REQUEST['ch_promote_id'];
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
$promote = M('Promote', 'tab_')->field('id')->where(['parent_id' => PID])->select();
|
|
|
|
|
$zi_p = implode(',', array_column($promote, 'id'));
|
|
|
|
|
$map['promote_id'] = array('in', "$zi_p");
|
|
|
|
|
}
|
|
|
|
|
$model = array(
|
|
|
|
|
'm_name' => 'SonSettlement',
|
|
|
|
|
'fields' => array(
|
|
|
|
|
'settlement_number',
|
|
|
|
|
'settlement_start_time',
|
|
|
|
|
'settlement_end_time',
|
|
|
|
|
'promote_id',
|
|
|
|
|
'promote_account',
|
|
|
|
|
'bind_coin_status',
|
|
|
|
|
'FLOOR(sum(sum_money*100))/100 as sum_money',
|
|
|
|
|
'sum(reg_number) as reg_number',
|
|
|
|
|
'FLOOR(sum(jie_money*100))/100 as jie_money',
|
|
|
|
|
'ti_status',
|
|
|
|
|
'create_time'
|
|
|
|
|
),
|
|
|
|
|
'order' => 'create_time desc',
|
|
|
|
|
'group' => 'settlement_number,create_time',
|
|
|
|
|
'title' => '子渠道结算单',
|
|
|
|
|
'template_list' => 'son_list',
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$user = A('User', 'Event');
|
|
|
|
|
$user->money_list($model, $p, $map);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*子渠道结算单
|
|
|
|
|
*/
|
|
|
|
|
public function son_earning($p = 0)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (!empty($_REQUEST['timestart']) || !empty($_REQUEST['timeend'])) {
|
|
|
|
|
$starttime = empty($_REQUEST['timestart']) ? strtotime("-7 day {$_REQUEST['timeend']}") : strtotime($_REQUEST['timestart']);
|
|
|
|
|
$endtime = empty($_REQUEST['timeend']) ? mktime(23, 59, 59, date('m'), date('d') - 1, date('Y')) : strtotime($_REQUEST['timeend']) + 24 * 60 * 60 - 1;
|
|
|
|
|
$this->assign('starttime', date('Y-m-d', $starttime));
|
|
|
|
|
$this->assign('endtime', date('Y-m-d', $endtime));
|
|
|
|
|
$mapp['u.register_time'] = array('BETWEEN', array($starttime, $endtime));
|
|
|
|
|
$mapp['u.' . SETTLEMENT_GRADE] = 0;
|
|
|
|
|
$map['s.pay_time'] = array('BETWEEN', array($starttime, $endtime));
|
|
|
|
|
$map['s.pay_status'] = 1;
|
|
|
|
|
$map['s.' . SETTLEMENT_GRADE] = 0;
|
|
|
|
|
|
|
|
|
|
if ($_REQUEST['bind_coin'] == 0) {
|
|
|
|
|
$map['s.pay_way'] = array('neq', -1);
|
|
|
|
|
}
|
|
|
|
|
unset($_REQUEST['timestart']);
|
|
|
|
|
unset($_REQUEST['timeend']);
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['ch_promote_id']) && !empty($_REQUEST['ch_promote_id'])) {
|
|
|
|
|
$chid = $_REQUEST['ch_promote_id'];
|
|
|
|
|
|
|
|
|
|
$promote_child = get_sub_channel_id($chid, PRO_GRADE + 1);
|
|
|
|
|
|
|
|
|
|
$map['s.promote_id'] = $mapp['u.promote_id'] = array('in', $promote_child);
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
$promote_child = get_zi_promote_id(PID);
|
|
|
|
|
if (empty($promote_child)) {
|
|
|
|
|
$this->error('该渠道无子渠道');
|
|
|
|
|
}
|
|
|
|
|
$map['s.promote_id'] = $mapp['u.promote_id'] = array('in', $promote_child);
|
|
|
|
|
}
|
|
|
|
|
$model = array(
|
|
|
|
|
'fields' => 'sum(s.pay_amount) as total_amount,s.promote_account,s.promote_id,s.game_name,s.game_id,s.sub_status',
|
|
|
|
|
'm_name' => 'Spend',
|
|
|
|
|
'title' => '子渠道结算单',
|
|
|
|
|
'template_list' => 'son_earning',
|
|
|
|
|
'join' => 'tab_apply on tab_Spend.game_id=tab_apply.game_id and tab_Spend.promote_id=tab_apply.promote_id',
|
|
|
|
|
'group' => 's.promote_id,s.game_id',
|
|
|
|
|
'currentid' => $chid ? $chid : '',
|
|
|
|
|
);
|
|
|
|
|
$mmap = array($mapp, $map);
|
|
|
|
|
$user = A('User', 'Event');
|
|
|
|
|
$user->check_child_bill($model, $p, $mmap);
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
$this->meta_title = '子渠道结算';
|
|
|
|
|
$this->display();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function generatesub()
|
|
|
|
|
{
|
|
|
|
|
//$data = $_REQUEST;
|
|
|
|
|
if (empty($_REQUEST['ids'])) {
|
|
|
|
|
$this->error('请选择要结算的数据');
|
|
|
|
|
} else {
|
|
|
|
|
$settData = array();
|
|
|
|
|
$settlement_number = 'js_' . date('YmdHis', time()) . rand(100, 999);
|
|
|
|
|
$create_time = time();
|
|
|
|
|
$start = $_REQUEST['timestart'];
|
|
|
|
|
$end = $_REQUEST['timeend'];
|
|
|
|
|
foreach ($_REQUEST['ids'] as $key => $value) {
|
|
|
|
|
$data = json_decode($value, true);
|
|
|
|
|
$data['settlement_number'] = $settlement_number;
|
|
|
|
|
$data['create_time'] = time();
|
|
|
|
|
$data['settlement_start_time'] = strtotime($data['settlement_start_time']);
|
|
|
|
|
$data['settlement_end_time'] = strtotime($data['settlement_end_time']);
|
|
|
|
|
switch ($data['cooperation']) {
|
|
|
|
|
case 'CPS':
|
|
|
|
|
$data['pattern'] = 0;
|
|
|
|
|
$cps = $data['ratio'];
|
|
|
|
|
$data['jie_money'] = round(($cps * $data['sum_money']) / 100, 2);
|
|
|
|
|
break;
|
|
|
|
|
case 'CPA':
|
|
|
|
|
$data['pattern'] = 1;
|
|
|
|
|
$cpa = $data['money'];
|
|
|
|
|
$data['jie_money'] = round($cpa * $data['reg_number'], 2);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
$userMap['register_time'] = array('BETWEEN', array($data['settlement_start_time'], $data['settlement_end_time'] + 86399));
|
|
|
|
|
$userMap['fgame_id'] = $data['game_id'];
|
|
|
|
|
|
|
|
|
|
$userMap[SETTLEMENT_GRADE] = $spendMap[SETTLEMENT_GRADE] = 0;
|
|
|
|
|
|
|
|
|
|
$userMap['promote_id'] = $spendMap['promote_id'] = array('in', $data['tpid']);
|
|
|
|
|
$spendMap['game_id'] = $data['game_id'];
|
|
|
|
|
$spendMap['pay_time'] = $userMap['register_time'];
|
|
|
|
|
$user = M('user', 'tab_')->where($userMap)->save(array(SETTLEMENT_GRADE => 1));
|
|
|
|
|
$spend = M('spend', 'tab_')->where($spendMap)->save(array(SETTLEMENT_GRADE => 1));
|
|
|
|
|
$settData[$key] = $data;
|
|
|
|
|
}
|
|
|
|
|
$result = M('SonSettlement', 'tab_')->addAll($settData);
|
|
|
|
|
if ($result) {
|
|
|
|
|
/*$this->success('生成结算单成功!',U('son_earning?success=1',array('timestart' => $start,'timeend' => $end)),true);*/
|
|
|
|
|
$this->success('生成结算单成功!', U('son_list'), true);
|
|
|
|
|
} else {
|
|
|
|
|
$this->error('生成结算单失败!', U('son_earning?fall=1', array('timestart' => $start, 'timeend' => $end)), true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->error('生成结算单失败!!!', U('son_earning?fall=1', array('timestart' => $start, 'timeend' => $end)), true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//申请提现
|
|
|
|
|
public function apply_withdraw($id, $op = 0)
|
|
|
|
|
{
|
|
|
|
|
$map['id'] = $id;
|
|
|
|
|
$with = M("withdraw", "tab_");
|
|
|
|
|
$totalSett = M("TotalSettlement", "tab_")->where($map)->find();
|
|
|
|
|
$with_map['settlement_number'] = $totalSett['settlement_number'];
|
|
|
|
|
$fid = $with->where($with_map)->find();
|
|
|
|
|
if ($fid == null) {
|
|
|
|
|
$add['settlement_number'] = $totalSett['settlement_number'];
|
|
|
|
|
$add['sum_money'] = $totalSett['jie_money'] ? $totalSett['jie_money'] : $totalSett['sum_money'];
|
|
|
|
|
$add['promote_id'] = $totalSett['promote_id'];
|
|
|
|
|
$add['promote_account'] = $totalSett['promote_account'];
|
|
|
|
|
$add['create_time'] = time();
|
|
|
|
|
$add['status'] = 0;
|
|
|
|
|
$with->add($add);
|
|
|
|
|
M("TotalSettlement", "tab_")->where($map)->save(array('ti_status' => 0));
|
|
|
|
|
$settMap['promote_id'] = $totalSett['promote_id'];
|
|
|
|
|
$settMap['starttime'] = $totalSett['starttime'];
|
|
|
|
|
$settMap['endtime'] = $totalSett['endtime'];
|
|
|
|
|
$settMap['create_time'] = $totalSett['create_time'];
|
|
|
|
|
M("settlement", "tab_")->where($settMap)->save(array('ti_status' => 0));
|
|
|
|
|
echo json_encode(array("status" => 1));
|
|
|
|
|
} else {
|
|
|
|
|
if ($op > 0) {
|
|
|
|
|
$with->where($with_map)->setField('status', 0);
|
|
|
|
|
M("settlement", "tab_")->where($map)->setField('ti_status', 0);
|
|
|
|
|
M("TotalSettlement", "tab_")->where($map)->save(array('ti_status' => 0));
|
|
|
|
|
echo json_encode(array("status" => 1));
|
|
|
|
|
} else {
|
|
|
|
|
echo json_encode(array("status" => 0));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//申请提现
|
|
|
|
|
public function son_apply_withdraw($settlement_number = '')
|
|
|
|
|
{
|
|
|
|
|
$map['settlement_number'] = $settlement_number;
|
|
|
|
|
$with_map['settlement_number'] = $totalSett['settlement_number'];
|
|
|
|
|
$result = M("SonSettlement", "tab_")->where($map)->save(array('ti_status' => 0));
|
|
|
|
|
if ($result !== false) {
|
|
|
|
|
echo json_encode(array("status" => 1));
|
|
|
|
|
} else {
|
|
|
|
|
echo json_encode(array("status" => 0));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function audit_withdraw($settlement_number = '')
|
|
|
|
|
{
|
|
|
|
|
$map['settlement_number'] = $settlement_number;
|
|
|
|
|
$with_map['settlement_number'] = $totalSett['settlement_number'];
|
|
|
|
|
$result = M("SonSettlement", "tab_")->where($map)->save(array('ti_status' => 1));
|
|
|
|
|
if ($result !== false) {
|
|
|
|
|
$this->success('审核成功');
|
|
|
|
|
} else {
|
|
|
|
|
$this->error('审核失败');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function arpu_analysis()
|
|
|
|
|
{
|
|
|
|
|
$this->meta_title = "ARPU统计";
|
|
|
|
|
A('User', 'Event')->arpu_analysis();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function cha_userarpu($p = 0)
|
|
|
|
|
{
|
|
|
|
|
$page = intval($p);
|
|
|
|
|
$page = $page ? $page : 1; //默认显示第一页数据arraypage
|
|
|
|
|
$arraypage = $page ? $page : 1; //默认显示第一页数据
|
|
|
|
|
$row = 10;
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['row'])) {
|
|
|
|
|
$row = $_REQUEST['row'];
|
|
|
|
|
} else {
|
|
|
|
|
$row = 10;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$time = $_REQUEST['time'];
|
|
|
|
|
$promote_id = $_REQUEST['promote_id'];
|
|
|
|
|
/* if ($promote_id <1) {
|
|
|
|
|
$pid = D('Promote')->get_child_promote(PID,'id');
|
|
|
|
|
if (empty($pid[0])) {
|
|
|
|
|
$promote_id = PID;
|
|
|
|
|
} else {
|
|
|
|
|
$id = implode(',',array_column($pid,'id'));
|
|
|
|
|
$promote_id = PID.','.$id;
|
|
|
|
|
}
|
|
|
|
|
} */
|
|
|
|
|
|
|
|
|
|
$join = "left join tab_user u on u.fgame_id = tab_game.id";
|
|
|
|
|
if ($time == '') {
|
|
|
|
|
$this->error('参数错误,缺少时间');
|
|
|
|
|
} else {
|
|
|
|
|
$map['register_time'] = array('between', array(strtotime($time), strtotime($time) + 24 * 60 * 60 - 1));
|
|
|
|
|
}
|
|
|
|
|
/* if($promote_id!=''){
|
|
|
|
|
$map_list['promote_id']=array('in',$promote_id);
|
|
|
|
|
$map['promote_id']=array('in',$promote_id);
|
|
|
|
|
$join .= " AND u.promote_id = {$promote_id}";
|
|
|
|
|
} */
|
|
|
|
|
|
|
|
|
|
if ($promote_id > 0) {
|
|
|
|
|
if (PID == $promote_id) {
|
|
|
|
|
$pro_arr[] = PID;
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
$pro_id1 = get_prmoote_chlid_account2($promote_id);
|
|
|
|
|
$pro_arr = array_column($pro_id1, 'id');
|
|
|
|
|
$pro_arr[] = $promote_id;
|
|
|
|
|
}
|
|
|
|
|
$map['promote_id'] = array('in', $pro_arr);
|
|
|
|
|
$map_list['promote_id'] = array('in', $pro_arr);
|
|
|
|
|
$promote_id = implode(',', $pro_arr);
|
|
|
|
|
$join .= " AND u.promote_id in ({$promote_id})";
|
|
|
|
|
} else {
|
|
|
|
|
$pid = D('Promote')->get_child_promote(PID, 'id');
|
|
|
|
|
if (empty($pid[0])) {
|
|
|
|
|
$pro_arr[] = PID;
|
|
|
|
|
} else {
|
|
|
|
|
$pro_arr = array_column($pid, 'id');
|
|
|
|
|
$pro_arr[] = PID;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$map['promote_id'] = array('in', $pro_arr);
|
|
|
|
|
$map_list['promote_id'] = array('in', $pro_arr);
|
|
|
|
|
$promote_id = implode(',', $pro_arr);
|
|
|
|
|
$join .= " AND u.promote_id in ({$promote_id})";
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
$spend2 = D('Spend');
|
|
|
|
|
$data = M('Game', 'tab_')->field('id as game_id, game_name')->order('id desc')->select();
|
|
|
|
|
foreach ($data as $key => $value) {
|
|
|
|
|
$game_id = $value['game_id'];
|
|
|
|
|
$map_list['game_id'] = $game_id;
|
|
|
|
|
$user = M('User', 'tab_');
|
|
|
|
|
$spend = M('spend', 'tab_');
|
|
|
|
|
|
|
|
|
|
//新增人数
|
|
|
|
|
$rdata = $user
|
|
|
|
|
->field('count(id) as register_num')
|
|
|
|
|
->where(array('fgame_id' => $game_id))
|
|
|
|
|
->where(array_merge($map, ['puid' => 0]))
|
|
|
|
|
->find();
|
|
|
|
|
$data[$key]['register_num'] = $rdata['register_num'];
|
|
|
|
|
//活跃玩家
|
|
|
|
|
//$data[$key]['act_user'] = $this->count_act_user($time,$game_id,$promote_id);
|
|
|
|
|
$activedata = D('User')->login_count_by_time(strtotime($time), strtotime($time) + 86399, $game_id, $promote_id);
|
|
|
|
|
$data[$key]['act_user'] = $activedata[0]['login_num'] ? $activedata[0]['login_num'] : 0;
|
|
|
|
|
//1日留存
|
|
|
|
|
$mapl = $map_list;
|
|
|
|
|
$mapl["FROM_UNIXTIME(register_time,'%Y-%m-%d')"] = $time;
|
|
|
|
|
$mapl['tab_user.promote_id'] = $mapl['promote_id'];
|
|
|
|
|
$mapl['tab_user.puid'] = 0;
|
|
|
|
|
unset($mapl['promote_id']);
|
|
|
|
|
$login_time = date('Y-m-d', strtotime("+1 day", strtotime($time)));
|
|
|
|
|
$num = $user
|
|
|
|
|
->field('count(DISTINCT tab_user.id) as num')
|
|
|
|
|
->join("right join tab_user_login_record as ur on ur.user_id = tab_user.id and FROM_UNIXTIME(ur.login_time,'%Y-%m-%d') = '{$login_time}'")
|
|
|
|
|
->where($mapl)
|
|
|
|
|
->find();
|
|
|
|
|
$data[$key]['keep_num'] = round($num['num'] / $data[$key]['register_num'], 4) * 100;
|
|
|
|
|
//充值
|
|
|
|
|
$mapl = $map_list;
|
|
|
|
|
empty($game_name) || $mapl['game_name'] = array('like', '%' . $game_name . '%');
|
|
|
|
|
|
|
|
|
|
$mapl['pay_status'] = 1;
|
|
|
|
|
$mapl["FROM_UNIXTIME(pay_time,'%Y-%m-%d')"] = $time;
|
|
|
|
|
if (I('bangbi') == 1) {
|
|
|
|
|
$mapl['pay_way'] = array('neq', '-10');
|
|
|
|
|
$bangbi = true;
|
|
|
|
|
} else {
|
|
|
|
|
$mapl['pay_way'] = array('neq', -1);
|
|
|
|
|
$bangbi = false;
|
|
|
|
|
}
|
|
|
|
|
$spend = $spend->field("IFNULL(sum(pay_amount),0) as money,IFNULL(count(distinct user_id),0) as people")->where($mapl)->find();
|
|
|
|
|
$data[$key]['spend'] = $spend['money'];
|
|
|
|
|
//付费玩家数
|
|
|
|
|
$data[$key]['spend_people'] = $spend['people'];
|
|
|
|
|
//新付费玩家
|
|
|
|
|
$newsdata = $spend2->pay_count_by_time_class([$time], $game_id, $promote_id, 1, $bangbi);
|
|
|
|
|
$data[$key]['spend_news'] = $newsdata[0]['pay_num'] ? $newsdata[0]['pay_num'] : 0;
|
|
|
|
|
//付费率
|
|
|
|
|
$data[$key]['spend_rate'] = round($data[$key]['spend_people'] / $data[$key]['act_user'], 4) * 100;
|
|
|
|
|
//ARPU
|
|
|
|
|
$data[$key]['ARPU'] = round($data[$key]['spend'] / $data[$key]['act_user'], 2);
|
|
|
|
|
//ARPPU
|
|
|
|
|
$data[$key]['ARPPU'] = round($data[$key]['spend'] / $data[$key]['spend_people'], 2);
|
|
|
|
|
if ($data[$key]['register_num'] == 0 && $data[$key]['act_user'] == 0 && $data[$key]['keep_num'] == 0 && $data[$key]['spend'] == 0 && $data[$key]['spend_people'] == 0) {
|
|
|
|
|
unset($data[$key]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$count = count($data);
|
|
|
|
|
/* 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());
|
|
|
|
|
} */
|
|
|
|
|
|
|
|
|
|
/*$page = set_pagination($count,++$count);
|
|
|
|
|
if($page) {$this->assign('_page', $page);}*/
|
|
|
|
|
$this->assign('_page', '<div><span class="rows">共 ' . $count . ' 条记录</span></div>');
|
|
|
|
|
|
|
|
|
|
/*$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('list_data', $data);
|
|
|
|
|
$this->display();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取活跃用户数
|
|
|
|
|
* @param $time
|
|
|
|
|
*/
|
|
|
|
|
public function count_act_user($time, $game_id = "", $promote_id = "")
|
|
|
|
|
{
|
|
|
|
|
$map["FROM_UNIXTIME(login_time,'%Y-%m-%d')"] = $time;
|
|
|
|
|
$map1["FROM_UNIXTIME(register_time,'%Y-%m-%d')"] = $time;
|
|
|
|
|
empty($game_id) || $map['game_id'] = $game_id;
|
|
|
|
|
empty($game_id) || $map1['fgame_id'] = $game_id;
|
|
|
|
|
if (!empty($promote_id)) {
|
|
|
|
|
$user = M('User', 'tab_')->field('id')->where(array('promote_id' => $promote_id))->select();
|
|
|
|
|
$user = implode(',', array_column($user, 'id'));
|
|
|
|
|
$map['user_id'] = array('in', $user);
|
|
|
|
|
$map1['id'] = array('in', $user);
|
|
|
|
|
};
|
|
|
|
|
$uudata = M('User', 'tab_')
|
|
|
|
|
->field('id')
|
|
|
|
|
->where($map1)
|
|
|
|
|
->select(false);
|
|
|
|
|
$data = M('user_login_record', 'tab_')
|
|
|
|
|
->field('id')
|
|
|
|
|
->where($map)
|
|
|
|
|
->union($uudata)
|
|
|
|
|
->group('user_id')
|
|
|
|
|
->select();
|
|
|
|
|
$data = count($data);
|
|
|
|
|
return $data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function retention_analysis()
|
|
|
|
|
{
|
|
|
|
|
$this->meta_title = '留存统计';
|
|
|
|
|
A('User', 'Event')->retention_analysis();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function details()
|
|
|
|
|
{
|
|
|
|
|
$map['id'] = $_REQUEST['id'];
|
|
|
|
|
$data = M('TotalSettlement', 'tab_')->where($map)->find();
|
|
|
|
|
$mapSett['promote_id'] = $data['promote_id'];
|
|
|
|
|
$mapSett['starttime'] = $data['starttime'];
|
|
|
|
|
$mapSett['endtime'] = $data['endtime'];
|
|
|
|
|
$mapSett['create_time'] = $data['create_time'];
|
|
|
|
|
$listData = M('settlement', 'tab_')->where($mapSett)->select();
|
|
|
|
|
$totalData = M('settlement', 'tab_')->where($mapSett)->sum('sum_money');
|
|
|
|
|
$this->assign('list_data', $listData);
|
|
|
|
|
$this->assign('total', $totalData);
|
|
|
|
|
$this->display();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function son_details()
|
|
|
|
|
{
|
|
|
|
|
$map['promote_id'] = $_REQUEST['promote_id'];
|
|
|
|
|
$map['settlement_number'] = $_REQUEST['settlement_number'];
|
|
|
|
|
$data = M('SonSettlement', 'tab_')->where($map)->select();
|
|
|
|
|
$total = M('SonSettlement', 'tab_')->where($map)->sum('jie_money');
|
|
|
|
|
$this->assign('total', floor($total * 100) / 100);
|
|
|
|
|
$this->assign('list_data', $data);
|
|
|
|
|
$this->display();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function summary($p = 1)
|
|
|
|
|
{
|
|
|
|
|
$page = intval($p);
|
|
|
|
|
$page = $page ? $page : 1; //默认显示第一页数据arraypage
|
|
|
|
|
$arraypage = $page ? $page : 1; //默认显示第一页数据
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['row'])) {
|
|
|
|
|
$size = $_REQUEST['row'];
|
|
|
|
|
} else {
|
|
|
|
|
$size = 10;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$uid = session('promote_auth.pid');
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['game_id']) && !empty($_REQUEST['game_id'])) {
|
|
|
|
|
$game_id = M('game', 'tab_')->field('id')->where(array('relation_game_id' => $_REQUEST['game_id']))->select();
|
|
|
|
|
$game_id = array_map('array_shift', $game_id);
|
|
|
|
|
$umap['fgame_id'] = $gmap['game_id'] = $g_map['id'] = array('in', $game_id);
|
|
|
|
|
//unset($_REQUEST['game_id']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['promote_id']) && !empty($_REQUEST['promote_id']) && !empty($_REQUEST['promote_account']) && isset($_REQUEST['promote_account'])) {
|
|
|
|
|
if ($_REQUEST['promote_id'] != $_REQUEST['promote_account']) {
|
|
|
|
|
$this->error('渠道ID与渠道账号不匹配');
|
|
|
|
|
} else {
|
|
|
|
|
$map['id'] = $_REQUEST['promote_id'];
|
|
|
|
|
}
|
|
|
|
|
unset($_REQUEST['promote_id']);
|
|
|
|
|
unset($_REQUEST['promote_account']);
|
|
|
|
|
} elseif (isset($_REQUEST['promote_id']) && !empty($_REQUEST['promote_id'])) {
|
|
|
|
|
$map['id'] = $_REQUEST['promote_id'];
|
|
|
|
|
unset($_REQUEST['promote_id']);
|
|
|
|
|
} elseif (isset($_REQUEST['promote_account']) && !empty($_REQUEST['promote_account'])) {
|
|
|
|
|
$map['id'] = $_REQUEST['promote_account'];
|
|
|
|
|
unset($_REQUEST['promote_account']);
|
|
|
|
|
} else {
|
|
|
|
|
$map['parent_id'] = $uid;
|
|
|
|
|
$map['id'] = $uid;
|
|
|
|
|
// $map['grand_id'] = $uid;
|
|
|
|
|
$map['_logic'] = 'or';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['server_name']) && !empty($_REQUEST['server_name'])) {
|
|
|
|
|
$smap['server_name'] = $gmap['server_name'] = $dmap['server_name'] = $_REQUEST['server_name'];
|
|
|
|
|
unset($_REQUEST['server_name']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (is_numeric($_REQUEST['server_id']) && $_REQUEST['server_id'] > 0) {
|
|
|
|
|
$smap['server_id'] = $gmap['server_id'] = $dmap['server_id'] = $_REQUEST['server_id'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['game_level']) && !empty($_REQUEST['game_level'])) {
|
|
|
|
|
$gamedata = M('game', 'tab_')->field('first_level,first_level_name,second_level_name,second_level,third_level,third_level_name')->where(array('relation_game_id' => $_REQUEST['game_id']))->find();
|
|
|
|
|
if ($gamedata['first_level_name'] == $_REQUEST['game_level']) {
|
|
|
|
|
$dmap['role_level'] = array('egt', $gamedata['first_level']);
|
|
|
|
|
} elseif ($gamedata['second_level_name'] == $_REQUEST['game_level']) {
|
|
|
|
|
$dmap['role_level'] = array('egt', $gamedata['second_level']);
|
|
|
|
|
} elseif ($gamedata['third_level_name'] == $_REQUEST['game_level']) {
|
|
|
|
|
$dmap['role_level'] = array('egt', $gamedata['third_level']);
|
|
|
|
|
}
|
|
|
|
|
unset($_REQUEST['game_level']);
|
|
|
|
|
}
|
|
|
|
|
if (isset($_REQUEST['begtime']) && isset($_REQUEST['endtime']) && !empty($_REQUEST['begtime']) && !empty($_REQUEST['endtime'])) {
|
|
|
|
|
$smap['pay_time'] = $gmap['register_time'] = $umap['register_time'] = $dmap['play_time'] = array('BETWEEN', [strtotime($_REQUEST['begtime']), strtotime($_REQUEST['endtime']) + 86400]);
|
|
|
|
|
unset($_REQUEST['begtime']);
|
|
|
|
|
unset($_REQUEST['endtime']);
|
|
|
|
|
} elseif (isset($_REQUEST['begtime']) && !empty($_REQUEST['begtime'])) {
|
|
|
|
|
$smap['pay_time'] = $gmap['register_time'] = $umap['register_time'] = $dmap['play_time'] = array('BETWEEN', [strtotime($_REQUEST['begtime']), date("Y-m-d", strtotime("-1 day"))]);
|
|
|
|
|
unset($_REQUEST['begtime']);
|
|
|
|
|
} elseif (isset($_REQUEST['endtime']) && !empty($_REQUEST['endtime'])) {
|
|
|
|
|
$smap['pay_time'] = $gmap['register_time'] = $umap['register_time'] = $dmap['play_time'] = array('ELT', strtotime($_REQUEST['endtime']) + 86400);
|
|
|
|
|
unset($_REQUEST['endtime']);
|
|
|
|
|
}
|
|
|
|
|
//子渠道
|
|
|
|
|
$child = M('promote', 'tab_')
|
|
|
|
|
->field('id,account')
|
|
|
|
|
->where($map)
|
|
|
|
|
->page($page, $size)
|
|
|
|
|
->select();
|
|
|
|
|
//$count = count($child);
|
|
|
|
|
$count = M('promote', 'tab_')->where($map)->count();
|
|
|
|
|
//$this->assign("count",count($child));
|
|
|
|
|
|
|
|
|
|
/* if($count > $size){
|
|
|
|
|
$page = new \Think\Page($count, $size);
|
|
|
|
|
$page->setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
|
|
|
|
|
$this->assign('_page', $page->show());
|
|
|
|
|
} */
|
|
|
|
|
|
|
|
|
|
$page = set_pagination($count, $size);
|
|
|
|
|
if ($page) {
|
|
|
|
|
$this->assign('_page', $page);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach ($child as $k3 => $v3) {
|
|
|
|
|
if ($child[$k3]['id'] == PID) {
|
|
|
|
|
$child[$k3]['gid'] = PID;
|
|
|
|
|
} else {
|
|
|
|
|
$child[$k3]['gid'] = M('promote', 'tab_')->field('id')->where(array('parent_id' => $child[$k3]['id']))->select();
|
|
|
|
|
$child[$k3]['gid'] = array_map('array_shift', $child[$k3]['gid']);
|
|
|
|
|
array_push($child[$k3]['gid'], $child[$k3]['id']);
|
|
|
|
|
}
|
|
|
|
|
$child[$k3]['register_user'] = M('user', 'tab_')
|
|
|
|
|
->field('id')
|
|
|
|
|
->where($umap)
|
|
|
|
|
->where(array('promote_id' => array('in', $child[$k3]['gid']), 'puid' => 0))
|
|
|
|
|
->count();
|
|
|
|
|
$child[$k3]['new_user'] = M('user', 'tab_')
|
|
|
|
|
->field('id')
|
|
|
|
|
->where($umap)
|
|
|
|
|
->where(array('promote_id' => array('in', $child[$k3]['gid']), 'puid' => 0))
|
|
|
|
|
->group('register_ip')
|
|
|
|
|
->select();
|
|
|
|
|
$child[$k3]['register_ip'] = M('user', 'tab_')
|
|
|
|
|
->field('register_ip')
|
|
|
|
|
->where($umap)
|
|
|
|
|
->where(array('promote_id' => array('in', $child[$k3]['gid']), 'puid' => 0))
|
|
|
|
|
->group('register_ip')
|
|
|
|
|
->select();
|
|
|
|
|
$child[$k3]['register_ip'] = count($child[$k3]['register_ip']);
|
|
|
|
|
$game1 = M('apply', 'tab_')
|
|
|
|
|
->field('game_id')
|
|
|
|
|
->where($gmap)
|
|
|
|
|
->where(array('promote_id' => array('in', $child[$k3]['gid']), 'status' => 1))
|
|
|
|
|
->group('game_id')
|
|
|
|
|
->select();
|
|
|
|
|
$game_count1 = count($game1);
|
|
|
|
|
$dabiao_user1 = 0;
|
|
|
|
|
$dabiao_game1 = 0;
|
|
|
|
|
for ($j = 0; $j <= $game_count1; $j++) {
|
|
|
|
|
$game_level = M('game', 'tab_')->field('first_level')->where(array('id' => $game1[$j]['game_id']))->find();
|
|
|
|
|
if ($dmap['role_level']) {
|
|
|
|
|
$game_level['first_level'] = $dmap['role_level'][1];
|
|
|
|
|
}
|
|
|
|
|
$dabiao1 = M('user_play_info', 'tab_')
|
|
|
|
|
->field('user_id')
|
|
|
|
|
->where($dmap)
|
|
|
|
|
->where(array('game_id' => $game1[$j]['game_id'], 'role_level' => array('egt', $game_level['first_level']), 'promote_id' => array('in', $child[$k3]['gid'])))
|
|
|
|
|
->group('user_id')
|
|
|
|
|
->select();
|
|
|
|
|
$dabiao1 = count($dabiao1);
|
|
|
|
|
if ($dabiao1 > 0) {
|
|
|
|
|
$dabiao_game1++;
|
|
|
|
|
}
|
|
|
|
|
$dabiao_user1 += $dabiao1;
|
|
|
|
|
}
|
|
|
|
|
$child[$k3]['dabiao_user'] = $dabiao_user1;
|
|
|
|
|
/* $dabiao_game1 = 0;
|
|
|
|
|
for($k=0;$k<=$game_count1;$k++){
|
|
|
|
|
$game_level = M('game','tab_')->field('first_level')->where(array('id'=>$game1[$k]['game_id']))->find();
|
|
|
|
|
if($dmap['role_level']){
|
|
|
|
|
$game_level['first_level'] = $dmap['role_level'][1];
|
|
|
|
|
}
|
|
|
|
|
$gdabiao = M('user_play_info','tab_')
|
|
|
|
|
->field('user_id')
|
|
|
|
|
->where($dmap)
|
|
|
|
|
->where(array('game_id'=>$game1[$k]['game_id'],'role_level'=>array('egt',$game_level['first_level']),'promote_id'=>array('in',$child[$k3]['gid'])))
|
|
|
|
|
->group('user_id')
|
|
|
|
|
->select();
|
|
|
|
|
$gdabiao = count($gdabiao);
|
|
|
|
|
$dabiao_game1 += $gdabiao;
|
|
|
|
|
} */
|
|
|
|
|
$child[$k3]['dabiao_game'] = $dabiao_game1;
|
|
|
|
|
$child[$k3]['spend'] = M('spend', 'tab_')
|
|
|
|
|
->field('user_id')
|
|
|
|
|
->where($smap)
|
|
|
|
|
->where(array('promote_id' => array('in', $child[$k3]['gid']), 'pay_status' => 1))
|
|
|
|
|
->group('user_id')
|
|
|
|
|
->select();
|
|
|
|
|
$child[$k3]['spend'] = count($child[$k3]['spend']);
|
|
|
|
|
$child[$k3]['and_spend'] = M('spend', 'tab_')
|
|
|
|
|
->field('sum(pay_amount) as amount ')
|
|
|
|
|
->where($smap)
|
|
|
|
|
->where(array('promote_id' => array('in', $child[$k3]['gid']), 'pay_status' => 1, 'sdk_version' => 1))
|
|
|
|
|
->select();
|
|
|
|
|
$child[$k3]['and_spend'] = array_map('array_shift', $child[$k3]['and_spend'])[0];
|
|
|
|
|
$child[$k3]['ios_spend'] = M('spend', 'tab_')
|
|
|
|
|
->field('sum(pay_amount) as amount ')
|
|
|
|
|
->where($smap)
|
|
|
|
|
->where(array('promote_id' => array('in', $child[$k3]['gid']), 'pay_status' => 1, 'sdk_version' => 2))
|
|
|
|
|
->select();
|
|
|
|
|
$child[$k3]['ios_spend'] = array_map('array_shift', $child[$k3]['ios_spend'])[0];
|
|
|
|
|
}
|
|
|
|
|
foreach ($child as $key1 => $value2) {
|
|
|
|
|
$all_data['register_user'] += $child[$key1]['register_user'];
|
|
|
|
|
$all_data['register_ip'] += $child[$key1]['register_ip'];
|
|
|
|
|
$all_data['dabiao_user'] += $child[$key1]['dabiao_user'];
|
|
|
|
|
$all_data['dabiao_game'] += $child[$key1]['dabiao_game'];
|
|
|
|
|
$all_data['spend'] += $child[$key1]['spend'];
|
|
|
|
|
$all_data['and_spend'] += $child[$key1]['and_spend'];
|
|
|
|
|
$all_data['ios_spend'] += $child[$key1]['ios_spend'];
|
|
|
|
|
}
|
|
|
|
|
$this->assign('meta_title', '数据汇总列表');
|
|
|
|
|
$this->assign('all_data', $all_data);
|
|
|
|
|
$this->assign('child', $child);
|
|
|
|
|
$this->map_game_list();
|
|
|
|
|
$this->assign('setdate', date("Y-m-d", strtotime("-1 day")));
|
|
|
|
|
$this->display();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function dabiao_game()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['game_id']) && !empty($_REQUEST['game_id'])) {
|
|
|
|
|
$game_id = M('game', 'tab_')->field('id')->where(array('relation_game_id' => $_REQUEST['game_id']))->select();
|
|
|
|
|
$game_id = array_map('array_shift', $game_id);
|
|
|
|
|
$gmap['game_id'] = array('in', $game_id);
|
|
|
|
|
//unset($_REQUEST['game_id']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['server_name']) && !empty($_REQUEST['server_name'])) {
|
|
|
|
|
$dmap['server_name'] = $_REQUEST['server_name'];
|
|
|
|
|
unset($_REQUEST['server_name']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['server_id']) && !empty($_REQUEST['server_id'])) {
|
|
|
|
|
$dmap['server_id'] = $_REQUEST['server_id'];
|
|
|
|
|
unset($_REQUEST['server_id']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['game_level']) && !empty($_REQUEST['game_level'])) {
|
|
|
|
|
$gamedata = M('game', 'tab_')->field('first_level,first_level_name,second_level_name,second_level,third_level,third_level_name')->where(array('relation_game_id' => $_REQUEST['game_id']))->find();
|
|
|
|
|
if ($gamedata['first_level_name'] == $_REQUEST['game_level']) {
|
|
|
|
|
$dmap['role_level'] = array('egt', $gamedata['first_level']);
|
|
|
|
|
} elseif ($gamedata['second_level_name'] == $_REQUEST['game_level']) {
|
|
|
|
|
$dmap['role_level'] = array('egt', $gamedata['second_level']);
|
|
|
|
|
} elseif ($gamedata['third_level_name'] == $_REQUEST['game_level']) {
|
|
|
|
|
$dmap['role_level'] = array('egt', $gamedata['third_level']);
|
|
|
|
|
}
|
|
|
|
|
unset($_REQUEST['game_level']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST['begtime']) && isset($_REQUEST['endtime']) && !empty($_REQUEST['begtime']) && !empty($_REQUEST['endtime'])) {
|
|
|
|
|
$dmap['play_time'] = array('BETWEEN', [strtotime($_REQUEST['begtime']), strtotime($_REQUEST['endtime']) + 86400]);
|
|
|
|
|
unset($_REQUEST['begtime']);
|
|
|
|
|
unset($_REQUEST['endtime']);
|
|
|
|
|
} elseif (isset($_REQUEST['begtime']) && !empty($_REQUEST['begtime'])) {
|
|
|
|
|
$dmap['play_time'] = array('BETWEEN', [strtotime($_REQUEST['begtime']), date("Y-m-d", strtotime("-1 day"))]);
|
|
|
|
|
unset($_REQUEST['begtime']);
|
|
|
|
|
} elseif (isset($_REQUEST['endtime']) && !empty($_REQUEST['endtime'])) {
|
|
|
|
|
$dmap['play_time'] = array('ELT', strtotime($_REQUEST['endtime']) + 86400);
|
|
|
|
|
unset($_REQUEST['endtime']);
|
|
|
|
|
}
|
|
|
|
|
$promote = $_REQUEST['promote_id'];
|
|
|
|
|
|
|
|
|
|
if (PID == $promote) {
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
$pids = get_prmoote_chlid_account($promote);
|
|
|
|
|
$pro_arr = array_column($pids, 'id');
|
|
|
|
|
$pro_arr[] = $promote;
|
|
|
|
|
$promote = implode(',', $pro_arr);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$game = M('apply', 'tab_')
|
|
|
|
|
->field('game_id,game_name')
|
|
|
|
|
->where($gmap)
|
|
|
|
|
->where(array('promote_id' => array('in', $promote), 'status' => 1))
|
|
|
|
|
->group('game_id')
|
|
|
|
|
->select();
|
|
|
|
|
$game_count = count($game);
|
|
|
|
|
for ($y = 0; $y <= $game_count; $y++) {
|
|
|
|
|
$game_level = M('game', 'tab_')->field('first_level')->where(array('id' => $game[$y]['game_id']))->find();
|
|
|
|
|
if ($dmap['role_level']) {
|
|
|
|
|
$game_level['first_level'] = $dmap['role_level'][1];
|
|
|
|
|
}
|
|
|
|
|
$gdabiao = M('user_play_info', 'tab_')
|
|
|
|
|
->field('user_id')
|
|
|
|
|
->where($dmap)
|
|
|
|
|
->where(array('game_id' => $game[$y]['game_id'], 'role_level' => array('egt', $game_level['first_level']), 'promote_id' => array('in', $promote)))
|
|
|
|
|
->group('user_id')
|
|
|
|
|
->select();
|
|
|
|
|
$gdabiao = count($gdabiao);
|
|
|
|
|
$game[$y]['num'] = $gdabiao;
|
|
|
|
|
if ($game[$y]['num'] == 0) {
|
|
|
|
|
unset($game[$y]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$this->assign('list_data', $game);
|
|
|
|
|
$this->display();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function map_game_list()
|
|
|
|
|
{
|
|
|
|
|
$uid = session('promote_auth.pid');
|
|
|
|
|
$map['tab_game.game_status'] = 1;
|
|
|
|
|
$map['tab_apply.status'] = 1;
|
|
|
|
|
$promote = $this->get_child_promote();
|
|
|
|
|
array_push($promote, $uid);
|
|
|
|
|
$map['tab_promote.id'] = array('in', $promote);
|
|
|
|
|
$data = M('game', 'tab_')
|
|
|
|
|
->field('relation_game_name,relation_game_id')
|
|
|
|
|
->join('tab_apply on tab_apply.game_id = tab_game.id')
|
|
|
|
|
->join('tab_promote ON tab_apply.promote_id = tab_promote.id')
|
|
|
|
|
->where($map)
|
|
|
|
|
->group('relation_game_id')
|
|
|
|
|
->select();
|
|
|
|
|
$this->assign("game_list", $data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function getServer()
|
|
|
|
|
{
|
|
|
|
|
$uid = session('promote_auth.pid');
|
|
|
|
|
$promote = $this->get_child_promote();
|
|
|
|
|
array_push($promote, $uid);
|
|
|
|
|
if (IS_POST) {
|
|
|
|
|
if (isset($_POST['game_id']) && !empty($_POST['game_id'])) {
|
|
|
|
|
$game = M('game', 'tab_')->field('id')->where(array('relation_game_id' => $_POST['game_id']))->select();
|
|
|
|
|
$map['u.game_id'] = array('in', array_map('array_shift', $game));
|
|
|
|
|
/*$map['u.promote_id'] = array('in',$promote);*/
|
|
|
|
|
/*$map['server_name'] = array('neq','');
|
|
|
|
|
$data1 = M('spend','tab_')
|
|
|
|
|
->field('server_name')
|
|
|
|
|
->where(array('pay_status'=>1))
|
|
|
|
|
->where($map)
|
|
|
|
|
->group('server_name')
|
|
|
|
|
->select();
|
|
|
|
|
$data2 = M('user_play_info','tab_')
|
|
|
|
|
->field('server_name')
|
|
|
|
|
->where($map)
|
|
|
|
|
->group('server_name')
|
|
|
|
|
->select();*/
|
|
|
|
|
|
|
|
|
|
$data1 = M('user_play_info', 'tab_')
|
|
|
|
|
->alias('u')
|
|
|
|
|
->field('s.server_name,s.id')
|
|
|
|
|
->join('tab_server as s on(s.id = u.server_id) ', 'INNER')
|
|
|
|
|
->where($map)
|
|
|
|
|
->group('s.id')
|
|
|
|
|
->select();
|
|
|
|
|
|
|
|
|
|
$data3 = M('game', 'tab_')
|
|
|
|
|
->field('first_level_name,second_level_name,third_level_name')
|
|
|
|
|
->where(array('relation_game_id' => $_POST['game_id']))
|
|
|
|
|
->find();
|
|
|
|
|
/*$data['server_name'] = array_unique(array_merge(array_map('array_shift', $data1),array_map('array_shift', $data2)));
|
|
|
|
|
*/
|
|
|
|
|
if (!empty($data1)) {
|
|
|
|
|
$data['server_name'] = (array)$data1;
|
|
|
|
|
} else {
|
|
|
|
|
$data['server_name'] = '';
|
|
|
|
|
}
|
|
|
|
|
$data['game_level'] = $data3;
|
|
|
|
|
|
|
|
|
|
echo json_encode(array('data' => $data));
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
echo json_encode(array('data' => ''));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function get_child_promote()
|
|
|
|
|
{
|
|
|
|
|
$uid = session('promote_auth.pid');
|
|
|
|
|
$map['parent_id'] = $uid;
|
|
|
|
|
$map['status'] = 1;
|
|
|
|
|
$data = M('promote', 'tab_')
|
|
|
|
|
->field('id')
|
|
|
|
|
->where($map)
|
|
|
|
|
->select();
|
|
|
|
|
return array_map('array_shift', $data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//查看角色详情
|
|
|
|
|
public function viewRole($id)
|
|
|
|
|
{
|
|
|
|
|
$userRoleData = array();
|
|
|
|
|
|
|
|
|
|
if ($id > 0) {
|
|
|
|
|
$promoteId = D('User')->where('id = %d', $id)->getField('promote_id');
|
|
|
|
|
$permission = hasPromotePermission(PID, $promoteId);//是否有该推广员权限
|
|
|
|
|
|
|
|
|
|
if ($permission) {
|
|
|
|
|
$map['tab_user.id'] = $id;
|
|
|
|
|
$map['tab_user.promote_id'] = PID;
|
|
|
|
|
|
|
|
|
|
$userRoleData = D('User')
|
|
|
|
|
->where($map)
|
|
|
|
|
->where('tab_user_play.game_id = tab_user.fgame_id')
|
|
|
|
|
->join('tab_user_play on tab_user.id = tab_user_play.user_id')
|
|
|
|
|
->field('tab_user.*,tab_user_play.game_name,tab_user_play.sdk_version,tab_user_play.server_name,tab_user_play.role_name')
|
|
|
|
|
->find();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->assign('list_data', $userRoleData);
|
|
|
|
|
$this->display('view_role');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function users()
|
|
|
|
|
{
|
|
|
|
|
$promoteId = session('promote_auth.pid');
|
|
|
|
|
$map = [
|
|
|
|
|
'_logic' => 'or',
|
|
|
|
|
'id' => $promoteId,
|
|
|
|
|
'parent_id' => $promoteId,
|
|
|
|
|
'grand_id' => $promoteId,
|
|
|
|
|
];
|
|
|
|
|
$ids = M('promote', 'tab_')->where($map)->getField('id', true);
|
|
|
|
|
|
|
|
|
|
$promotes = [];
|
|
|
|
|
$groupPromotes = [];
|
|
|
|
|
if ($promote['parent_id'] == 0) {
|
|
|
|
|
$groupPromotes = M('promote', 'tab_')->field(['id', 'account', 'real_name'])->where(['parent_id' => $promoteId])->select();
|
|
|
|
|
$promotes = M('promote', 'tab_')->field(['id', 'account', 'real_name'])->where(['grand_id' => $promoteId])->select();
|
|
|
|
|
}
|
|
|
|
|
if ($promote['parent_id'] > 0 && $promote['grand_id'] == 0) {
|
|
|
|
|
$promotes = M('promote', 'tab_')->field(['id', 'account', 'real_name'])->where(['parent_id' => $promoteId])->select();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$fields = [
|
|
|
|
|
'id', 'account', 'promote_account', 'promote_id', 'device_number', 'register_time', 'register_ip', 'login_time', 'login_ip', 'device_type'
|
|
|
|
|
];
|
|
|
|
|
$query = M('user', 'tab_')->field($fields)->where(['promote_id' => ['in', $ids]]);
|
|
|
|
|
list($records, $pagination, $count) = $this->paginate($query);
|
|
|
|
|
$this->assign('promotes', $promotes);
|
|
|
|
|
$this->assign('groupPromotes', $groupPromotes);
|
|
|
|
|
$this->assign('records', $records);
|
|
|
|
|
$this->assign('pagination', $pagination);
|
|
|
|
|
$this->assign('count', $count);
|
|
|
|
|
$this->display();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function userRoles($p = 0)
|
|
|
|
|
{
|
|
|
|
|
$promoteId = session('promote_auth.pid');
|
|
|
|
|
$map = [
|
|
|
|
|
'_logic' => 'or',
|
|
|
|
|
'id' => $promoteId,
|
|
|
|
|
'parent_id' => $promoteId,
|
|
|
|
|
'grand_id' => $promoteId,
|
|
|
|
|
];
|
|
|
|
|
$ids = M('promote', 'tab_')->where($map)->getField('id', true);
|
|
|
|
|
|
|
|
|
|
$promotes = [];
|
|
|
|
|
$groupPromotes = [];
|
|
|
|
|
if ($promote['parent_id'] == 0) {
|
|
|
|
|
$groupPromotes = M('promote', 'tab_')->field(['id', 'account', 'real_name'])->where(['parent_id' => $promoteId])->select();
|
|
|
|
|
$promotes = M('promote', 'tab_')->field(['id', 'account', 'real_name'])->where(['grand_id' => $promoteId])->select();
|
|
|
|
|
}
|
|
|
|
|
if ($promote['parent_id'] > 0 && $promote['grand_id'] == 0) {
|
|
|
|
|
$promotes = M('promote', 'tab_')->field(['id', 'account', 'real_name'])->where(['parent_id' => $promoteId])->select();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$map = [];
|
|
|
|
|
$map = ['user_id' => $userId];
|
|
|
|
|
if (isset($_REQUEST['game_name'])) {
|
|
|
|
|
$map['game_name'] = trim($_REQUEST['game_name']);
|
|
|
|
|
unset($_REQUEST['game_name']);
|
|
|
|
|
}
|
|
|
|
|
if (isset($_REQUEST['server_id'])) {
|
|
|
|
|
$map['server_id'] = trim($_REQUEST['server_id']);
|
|
|
|
|
unset($_REQUEST['server_id']);
|
|
|
|
|
}
|
|
|
|
|
if (isset($_REQUEST['role_name'])) {
|
|
|
|
|
$map['role_name'] = trim($_REQUEST['role_name']);
|
|
|
|
|
unset($_REQUEST['role_name']);
|
|
|
|
|
}
|
|
|
|
|
$map['promote_d'] = ['in', $ids];
|
|
|
|
|
$query = M('user_play_info', 'tab_')->where($map);
|
|
|
|
|
list($records, $pagination, $count) = $this->paginate($query);
|
|
|
|
|
$this->assign('records', $records);
|
|
|
|
|
$this->assign('pagination', $pagination);
|
|
|
|
|
$this->assign('count', $count);
|
|
|
|
|
$this->display('userRoles');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function userRecharges()
|
|
|
|
|
{
|
|
|
|
|
$userId = I('id', 0);
|
|
|
|
|
|
|
|
|
|
$promoteId = session('promote_auth.pid');
|
|
|
|
|
$map = [
|
|
|
|
|
'_logic' => 'or',
|
|
|
|
|
'id' => $promoteId,
|
|
|
|
|
'parent_id' => $promoteId,
|
|
|
|
|
'grand_id' => $promoteId,
|
|
|
|
|
];
|
|
|
|
|
$ids = M('promote', 'tab_')->where($map)->getField('id', true);
|
|
|
|
|
|
|
|
|
|
$map = ['user_id' => $userId];
|
|
|
|
|
if (isset($_REQUEST['game_name'])) {
|
|
|
|
|
$map['game_name'] = trim($_REQUEST['game_name']);
|
|
|
|
|
unset($_REQUEST['game_name']);
|
|
|
|
|
}
|
|
|
|
|
if (isset($_REQUEST['server_id'])) {
|
|
|
|
|
$map['server_id'] = trim($_REQUEST['server_id']);
|
|
|
|
|
unset($_REQUEST['server_id']);
|
|
|
|
|
}
|
|
|
|
|
if (isset($_REQUEST['role_name'])) {
|
|
|
|
|
$map['role_name'] = trim($_REQUEST['role_name']);
|
|
|
|
|
unset($_REQUEST['role_name']);
|
|
|
|
|
}
|
|
|
|
|
$query = M('user_play_info', 'tab_')->where($map);
|
|
|
|
|
list($roles, $pagination, $count) = $this->paginate($query);
|
|
|
|
|
$roleIds = array_column($roles, 'role_id');
|
|
|
|
|
|
|
|
|
|
$map = [];
|
|
|
|
|
$map['pay_status'] = 1;
|
|
|
|
|
$map['pay_game_status'] = 1;
|
|
|
|
|
if (count($roleIds) > 0) {
|
|
|
|
|
$map['game_player_id'] = ['in', $roleIds];
|
|
|
|
|
} else {
|
|
|
|
|
$map['_string'] = '1<>1';
|
|
|
|
|
}
|
|
|
|
|
$map['promote_id'] = ['in', $ids];
|
|
|
|
|
$allRecharges = M('spend', 'tab_')->field('count(*) count, sum(cost) cost, game_player_id')->where($map)->group('game_player_id')->select();
|
|
|
|
|
$allRecords = [];
|
|
|
|
|
foreach ($allRecharges as $recharge) {
|
|
|
|
|
$allRecords[$recharge['game_player_id']] = $recharge;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$map['pay_time'] = ['between', [strtotime(date('Y-m-d 00:00:00')), strtotime(date('Y-m-d 23:59:59'))]];
|
|
|
|
|
$todayRecharges = M('spend', 'tab_')->field('sum(cost) cost, game_player_id')->where($map)->group('game_player_id')->select();
|
|
|
|
|
$todayRecords = [];
|
|
|
|
|
foreach ($todayRecharges as $recharge) {
|
|
|
|
|
$todayRecords[$recharge['game_player_id']] = $recharge;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$records = [];
|
|
|
|
|
foreach ($roles as $role) {
|
|
|
|
|
$records[] = [
|
|
|
|
|
'user_account' => $role['user_account'],
|
|
|
|
|
'game_name' => $role['game_name'],
|
|
|
|
|
'role_name' => $role['role_name'],
|
|
|
|
|
'role_id' => $role['role_id'],
|
|
|
|
|
'role_level' => $role['role_level'],
|
|
|
|
|
'server_id' => $role['server_id'],
|
|
|
|
|
'server_name' => $role['server_name'],
|
|
|
|
|
'recharge_cost' => isset($allRecords[$role['role_id']]) ? round(floatval($allRecords[$role['role_id']]['cost']), 2) : 0,
|
|
|
|
|
'recharge_count' => isset($allRecords[$role['role_id']]) ? $allRecords[$role['role_id']]['count'] : 0,
|
|
|
|
|
'recharge_cost_today' =>isset($todayRecords[$role['role_id']]) ? round(floatval($todayRecords[$role['role_id']]['cost']), 2) : 0,
|
|
|
|
|
'play_time' => $role['play_time'],
|
|
|
|
|
'play_ip' => $role['play_ip'],
|
|
|
|
|
'promote_id' => $role['promote_id'],
|
|
|
|
|
'promote_account' => $role['promote_account'],
|
|
|
|
|
'sdk_version' => $role['sdk_version'],
|
|
|
|
|
'unlogin_day' => intval((strtotime(date('Y-m-d 00:00:00')) - strtotime(date('Y-m-d 00:00:00', $role['play_time']))) / (24*3600) )
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->assign('records', $records);
|
|
|
|
|
$this->assign('pagination', $pagination);
|
|
|
|
|
$this->assign('count', $count);
|
|
|
|
|
$this->display('userRecharges');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* [充值详细信息]
|
|
|
|
|
* @param $id [充值id]
|
|
|
|
|
*/
|
|
|
|
|
public function viewSpendDetailed($id)
|
|
|
|
|
{
|
|
|
|
|
$spendData = array();
|
|
|
|
|
|
|
|
|
|
if ($id > 0) {
|
|
|
|
|
$promoteId = D('Spend')->where('id = %d', $id)->getField('promote_id');
|
|
|
|
|
$permission = hasPromotePermission(PID, $promoteId);//是否有该推广员权限
|
|
|
|
|
|
|
|
|
|
if (!$permission) {
|
|
|
|
|
$map['id'] = $id;
|
|
|
|
|
|
|
|
|
|
$spendData = D('Spend')->where($map)->find();
|
|
|
|
|
$spendData['pay_status'] = ($spendData['pay_status'] == 1) ? '成功' : '失败';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->assign('list_data', $spendData);
|
|
|
|
|
$this->display('view_spend_detailed');
|
|
|
|
|
}
|
|
|
|
|
}
|