@ -2265,7 +2265,7 @@ class ExportController extends Controller
$re_data['pay_time'] = set_show_time($order_detail['pay_time']);
$re_data['payed_time'] = set_show_time($order_detail['payed_time']);
} elseif($v['tab'] == 'deposit') {
$order_detail = M('deposit', 'tab_')->field('create_time,payed_time,user_account,promote_account,pay_amount,pay_way')->where(['pay_order_number' => $v['pay_order_number']])->find();
$order_detail = M('deposit', 'tab_')->field('create_time,payed_time,user_account,promote_account,pay_amount,pay_way')->where(['pay_order_number' => $v['pay_order_number']])->find();
$re_data['pay_time'] = set_show_time($order_detail['create_time']);
$re_data['payed_time'] = set_show_time($order_detail['payed_time']);
}
@ -2475,7 +2475,7 @@ class ExportController extends Controller
break;
case 28:
$xlsCell = array(
"账号ID","玩家账号", "账户平台币", "累计使用平台币", "累计充值平台币 ", "后台发放平台币"
"账号ID","玩家账号", "平台币余额", "平台币直充余额", "平台币直充支出", "平台币直充金额 ", "后台发放平台币"
);
$params = I('get.');
@ -2545,54 +2545,94 @@ class ExportController extends Controller
->field('id, account')
->where($map)
->count();
$perSize = 1000;//每次查询的条数
$pages = ceil($count / $perSize);
for($i = 1; $i < = $pages; $i++) {
$datas = M('user', 'tab_')
->field('id, account')
->where($map)
->limit(($i-1)*$perSize ,$perSize)
->select();
// $datas = M('user', 'tab_')
// ->field('id, account')
// ->where($map)
// ->limit(($i-1)*$perSize ,$perSize)
// ->select();
$map5['v.pay_type'] = 1;
$map5['v.create_time'] = $map['create_time'];
$map5[] = ['u.id = v.user_id'] ;
$map6[] = ['u.id = v.user_id'];
$map6['v.pay_type'] = 2;
$map6['v.create_time'] = $map['create_time'];
$map7[] = ['u.id = v.user_id'];
$map7['v.pay_type'] = 3;
$map7['v.create_time'] = $map['create_time'];
$map8[] = ['u.id = v.user_id'];
$map8['v.create_time'] = $map['create_time'];
$map9[] = ['u.id = v.user_id'];
$map9['v.pay_type'] = 3;
if (!empty($map['create_time'][1][1])) {
$map9['v.create_time'] = ['elt', $map['create_time'][1][1] ];
}
if (!empty($map['create_time'][1][0]) & & empty($map['create_time'][1][1])) {
$map9['v.create_time'] = ['egt', $map['create_time'][1][0] ];
}
$valueQuery5 = M('value_detail_log', 'tab_')->alias('v')->field('IFNULL(sum(abs(v.value)), 0) as spend_value')
->where($map5)->buildSql();
$valueQuery6 = M('value_detail_log', 'tab_')->alias('v')->field('sum(v.value) as spend_value')
->where($map6)->buildSql();
$valueQuery7 = M('value_detail_log', 'tab_')->alias('v')->field('sum(v.value) as spend_value')
->where($map7)->buildSql();
$valueQuery8 = M('value_detail_log', 'tab_')->alias('v')->field('after_value')->where($map8)->order('create_time desc')->limit(1)->buildSql();
$valueQuery9 = M('value_detail_log', 'tab_')->alias('v')->field('IFNULL(sum(abs(v.value)), 0) as spend_value')
->where($map9)->buildSql();
$datas = M('user', 'tab_')->alias('u')->field("u.id, u.account, {$valueQuery8} as totalvalue, {$valueQuery5} as spendvalue, {$valueQuery6} as deposit, {$valueQuery7} as promoteCoin , if (({$valueQuery8}) - ({$valueQuery9}) > 0, ({$valueQuery8}) - ({$valueQuery9}), 0) as restvalue")->where($map)->limit(($i-1)*$perSize ,$perSize)->order('restvalue desc')->group('u.id')->select();
$query = M('user', 'tab_')->alias('u')->field("u.id, u.account, {$valueQuery8} as totalvalue, {$valueQuery5} as spendvalue, {$valueQuery6} as deposit, {$valueQuery7} as promoteCoin , if (({$valueQuery8}) - ({$valueQuery9}) > 0, ({$valueQuery8}) - ({$valueQuery9}), 0) as restvalue")->where($map)->order('id desc')->group('u.id')->buildSql();
$allTotalValue1 = M()->alias('t')->table($query)->sum('t.totalvalue');
$allRestValue = M()->alias('rest')->table($query)->sum('rest.restvalue');
$allDatas = [];
foreach($datas as $key => $data) {
$allDatas['user_id'] = $data['id'];
$allDatas['user_account'] = $data['account'];
$spend = M('value_detail_log', 'tab_')->where(['user_id'=>$data['id'], 'pay_type'=>1])->sum('value');
$map5['user_id'] = $data['id'];
$map5['pay_type'] = 1;
$map5['create_time'] = $map['create_time'];
$spend = M('value_detail_log', 'tab_')->where($map5)->sum('value');
// $map5['user_id'] = $data['id'];
// $map5['pay_type'] = 1;
// $map5['create_time'] = $map['create_time'];
// $spend = M('value_detail_log', 'tab_')->where($map5)->sum('value');
$spend = $data['spendvalue'];
if(empty($spend)) {
$spend = '0.00';
}else {
$spend = number_format(abs($spend),2,'.','');
}
$map6['user_id'] = $data['id'];
$map6['pay_type'] = 2;
$map6['create_time'] = $map['create_time'];
$deposit = M('value_detail_log', 'tab_')->where($map6)->sum('value');
// $map6['user_id'] = $data['id'];
// $map6['pay_type'] = 2;
// $map6['create_time'] = $map['create_time'];
// $deposit = M('value_detail_log', 'tab_')->where($map6)->sum('value');
$deposit = $data['deposit'];
if(empty($deposit)) {
$deposit = '0.00';
}
$map7['user_id'] = $id;
$map7['pay_type'] = 3;
$map7['create_time'] = $map['create_time'];
$promoteCoin = M('value_detail_log', 'tab_')->where($map7)->sum('value');
// $map7['user_id'] = $id;
// $map7['pay_type'] = 3;
// $map7['create_time'] = $map['create_time'];
// $promoteCoin = M('value_detail_log', 'tab_')->where($map7)->sum('value');
$promoteCoin = $data['promotecoin'];
if(empty($promoteCoin)) {
$promoteCoin = '0.00';
}
$map8['user_id'] = $data['id'];
$map8['create_time'] = $map['create_time'];
$newValueByTimeDatas = M('value_detail_log', 'tab_')->field('after_value')->where($map8)->order('create_time desc')->limit(1)->select();
if(empty($newValueByTimeDatas)) {
$aValue = '0.00';
}else {
$aValue = $newValueByTimeDatas[0]['after_value'];
$restValue = $data['restvalue'];
if(empty($restValue)) {
$restValue = '0.00';
}
$alltotalvalue = $data['totalvalue'];
if(empty($alltotalvalue)) {
$alltotalvalue = '0.00';
}
$allDatas['bind_balance'] = $aValue;
$allDatas['bind_balance'] = $alltotalvalue;
$allDatas['rest_value'] = $restValue ;
$allDatas['spend_amount'] = $spend;
$allDatas['deposit_amount'] = $deposit;
$allDatas['coin_amount'] = $promoteCoin;
@ -2608,7 +2648,8 @@ class ExportController extends Controller
}
$alldatas1['user_id'] = "汇总(检索时间内所有数据的统计)";
$alldatas1['user_account'] = "";
$alldatas1['bind_balance'] = $banlaceTotal;
$alldatas1['bind_balance'] = $allTotalValue1;
$alldatas1['restvalue'] = $allRestValue;
$alldatas1['spend_amount'] = abs($totalSpend);
$alldatas1['deposit_amount'] = $deposit1;
$alldatas1['coin_amount'] = $promoteCoin;
@ -2679,7 +2720,6 @@ class ExportController extends Controller
->where($map)
->limit(($i-1)*$perSize ,$perSize)
->select();
foreach ($valueDetailDatas as $key => $valueDetailData) {
$vlaueDetailData['order_number'] = $valueDetailData['order_number'];
$vlaueDetailData['create_time'] = date('Y-m-d H:i:s', $valueDetailData['create_time']);
@ -2697,14 +2737,22 @@ class ExportController extends Controller
}
$vlaueDetailData['value'] = $valueDetailData['value'];
$vlaueDetailData['after_value'] = $valueDetailData['after_value'];
$map8['user_id'] = $id;
$map8['create_time'] = $map['create_time'];
$newValueByTimeDatas = M('value_detail_log', 'tab_')->field('after_value')->where($map8)->group('user_id')->select();
$aValue = $newValueByTimeDatas['after_value'];
$allDatas['bind_balance'] = $aValue;
$allDatas['spend_amount'] = $spend;
$allDatas['deposit_amount'] = $deposit;
$allDatas['coin_amount'] = $promoteCoin;
mb_convert_variables('GBK', 'UTF-8', $vlaueDetailData);
fputcsv($fp, $vlaueDetailData);
}
unset($vlaueDetailDatas);//释放变量的内存
//刷新输出缓冲到浏览器
ob_flush();
flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
// mb_convert_variables('GBK', 'UTF-8', $allDatas );
// fputcsv($fp, $allDatas);
}
if($t >= 0 ) {
$fuhao = '+';
@ -8983,6 +9031,7 @@ class ExportController extends Controller
array('status','状态'),
array('user_account','游戏账号'),
array('creator','创单人'),
array('handler','接单人'),
array('created_time', '创单时间'),
array('score', '分数'),
array('attachment_type', '附件')
@ -8994,6 +9043,7 @@ class ExportController extends Controller
$item['type'] = $item['type'] == 1 ? '资源' : '反馈';
$item['status'] = $item['status'] == 1 ? '完成' : '处理中';
$item['creator'] = get_admin_name($item['creator_id']);
$item['handler'] = get_admin_name($item['handler_id']);
$item['created_time'] = date('Y-m-d H:i:s', $item['created_time']);
$item['attachment_type'] = empty($item['attachment_url']) ? '无' : '有';
$item['order_no'] = "\t{$item['order_no']}";
@ -9024,24 +9074,61 @@ class ExportController extends Controller
$map['p.id'] = I('promote_id');
}
$pdlMap = "";
$pdlMap = "";
$weekMap = '';
if ($startTime = I('create_time_start')) {
$startTime = strtotime($startTime);
$pdlMap .= " and pdl.create_time >={$startTime}";
$pdlMap .= " and pdl.create_time >={$startTime}";
$weekMap .= " and register_time >={$startTime}";
}
if ($endTime = I('create_time_end')) {
$endTime = strtotime($endTime) + 86400;
$pdlMap .= " and pdl.create_time < {$endTime}";
$pdlMap .= " and pdl.create_time < {$endTime}";
$weekMap .= " and register_time < {$endTime}";
}
if ($startTime = I('create_time_start')) {
$startTime = strtotime($startTime);
$pdlMap .= " and pdl.create_time >={$startTime}";
$weekMap .= " and register_time >={$startTime}";
}
if ($info['level'] == PromoteModel::LEVEL_GROUP_LEADER) {
$xlsData = M('promote', 'tab_')->alias('p')
->field('p.id, p.level, p.account, count(pdl.id) as lowerCount, count(if(pdl.type = 1, 1, null)) as signCount, count(if(pdl.type = 2, 1, null)) as tfCount, count(if(pdl.type = 3, 1, null)) as superSignCount')
->join("tab_package_download_log pdl on pdl.promote_id = p.id $pdlMap", 'left')
->where($map)
->group('p.id')
->select();
if ($level == PromoteModel::LEVEL_TEAM_MEMBER) {
$xlsData = M('promote', 'tab_')->alias('p')
->field('p.id, p.level, p.account')
->where($map)
->select();
if ($xlsData) {
$beginThisweek = mktime(0, 0 , 0,date("m"),date("d")-date("w")+1,date("Y"));
$endThisweek = mktime(23,59,59,date("m"),date("d")-date("w")+7,date("Y"));
if (empty($weekMap)) {
$weekMap = " and register_time between $beginThisweek and $endThisweek";
}
foreach ($xlsData as & $item) {
$item['ioscount'] = M('user', 'tab_')->where('device_type = 2 and promote_id = ' . $item['id'])->count();
$item['weekcount'] = M('user', 'tab_')->where("device_type = 2 and promote_id = {$item['id']}" . $weekMap)->count();
$itemCount = M('package_download_log', 'tab_')->alias('pdl')
->field('count(if(pdl.type = 1, 1, null)) as signCount, count(if(pdl.type = 2, 1, null)) as tfCount, count(if(pdl.type = 3, 1, null)) as superSignCount')
->where("promote_id={$item['id']} $pdlMap")->select();
$item['signcount'] = $itemCount[0]['signcount'] ?? 0;
$item['tfcount'] = $itemCount[0]['tfcount'] ?? 0;
$item['supersigncount'] = $itemCount[0]['supersigncount'] ?? 0;
}
// $promoters = M('promote', 'tab_')->alias('p')->field('p.id, p.level, p.account')->where($map)->select();
// $pids = implode(',', array_column($promoters, 'id'));
// $total[0]['ioscount'] = M('user', 'tab_')->where("device_type = 2 and promote_id in ($pids)")->count();
// $total[0]['weekcount'] = M('user', 'tab_')->where("device_type = 2 and promote_id in ($pids)" . $weekMap)->count();
// $totalCount = M('package_download_log', 'tab_')->alias('pdl')
// ->field('count(if(pdl.type = 1, 1, null)) as signCount, count(if(pdl.type = 2, 1, null)) as tfCount, count(if(pdl.type = 3, 1, null)) as superSignCount')
// ->where("promote_id in ($pids) $pdlMap")->select();
// $total[0]['signcount'] = $totalCount[0]['signcount'] ?? 0;
// $total[0]['tfcount'] = $totalCount[0]['tfcount'] ?? 0;
// $total[0]['supersigncount'] = $totalCount[0]['supersigncount'] ?? 0;
}
} else {
$xlsData = M('promote', 'tab_')->alias('p')
->field('p.id, p.level, p.account, count(if(p2.level = '.($level+1).', 1, null)) as lowerCount, count(if(pdl.type = 1, 1, null)) as signCount, count(if(pdl.type = 2, 1, null)) as tfCount, count(if(pdl.type = 3, 1, null)) as superSignCount')
@ -9051,14 +9138,28 @@ class ExportController extends Controller
->group('p.id')
->select();
}
$xlsCell = array(
array('account', PromoteModel::$levelArr[$level]."账号"),
array('lowercount', PromoteModel::$levelArr[$level+1]."数量"),
array('tfcount', 'TF下载数'),
array('supersigncount', "超级签下载数"),
array('signcount', "企业签下载数"),
);
if ($level == PromoteModel::LEVEL_TEAM_MEMBER) {
foreach($xlsData as & $item) {
$item['tfcount'] = $item['tfcount'] . "(" . (empty($item['ioscount']) ? 0 : round( ($item['tfcount'] / $item['ioscount']) * 100 , 2)) . ")%";
}
$xlsCell = array(
array('account', PromoteModel::$levelArr[$level]."账号"),
array('ioscount', "iOS用户总数"),
array('weekcount', "新增iOS用户总数"),
array('tfcount', 'TF下载数/iOS用户总数'),
array('supersigncount', "超级签下载数"),
array('signcount', "企业签下载数"),
);
} else {
$xlsCell = array(
array('account', PromoteModel::$levelArr[$level]."账号"),
array('lowercount', PromoteModel::$levelArr[$level+1]."数量"),
array('tfcount', 'TF下载数'),
array('supersigncount', "超级签下载数"),
array('signcount', "企业签下载数"),
);
}
$this->exportAddOperationLog('Statistics/packDownload','统计-IOS下载统计-导出');
$this->exportExcel($xlsName, $xlsCell, $xlsData);
}
@ -9157,4 +9258,95 @@ class ExportController extends Controller
$this->exportExcel($xlsName, $xlsCell, $list);
}
public function exportWorkOrderStatistics()
{
$order = '';
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);
$order = 'order by ' . $data_order_type . " " . ($data_order == 3 ? 'desc' : 'asc');
}
$map = '1=1';
if (!empty(I('nickname'))) {
$map .= " and t.nickname = '" . I('nickname') . "'";
}
// 获取所有传单或者接单用户id
$userids = M('work_order_info', 'tab_')
->field("concat(creator_id, ',', handler_id) as userid")
->join('sys_member as t on creator_id = t.uid or handler_id = t.uid')
->where($map)
->select();
if (empty($userids)) {
$list = [];
$count = 0;
} else {
$userids = implode(',', array_unique(array_filter(explode(',', implode(',', array_column($userids, 'userid'))))));
$count = count($userids);
$list = M('work_order_info', 'tab_')->query("SELECT
t.id,
t.nickname,
sum(total_create_count) as total_create_count,
sum(total_accepted_count) as total_accepted_count,
sum(total_handle_count) as total_handle_count,
sum(total_complete_count) as total_complete_count
FROM
(
SELECT
u.uid as id,
u.nickname,
count(*) AS total_create_count,
count(
IF (i.`handler_id` > 0, 1, NULL)
) AS total_accepted_count,
NULL AS total_handle_count,
NULL AS total_complete_count
FROM
sys_member u
JOIN tab_work_order_info i ON i.creator_id = u.uid
WHERE
u.uid in ({$userids})
GROUP BY u.uid
UNION
SELECT
u.uid as id,
u.nickname,
NULL AS total_create_count,
NULL AS total_accepted_count,
count(*) AS total_handle_count,
count(IF(i.`status` = 1, 1, NULL)) AS total_complete_count
FROM
sys_member u
JOIN tab_work_order_info i ON i.handler_id = u.uid
WHERE
u.uid in ({$userids})
GROUP BY u.uid
) AS t
where {$map}
GROUP BY t.id
$order");
}
if ($list) {
foreach ($list as & $item)
{
$item['total_create_count'] = $item['total_create_count'] ?? 0;
$item['total_accepted_count'] = $item['total_accepted_count'] ?? 0;
$item['total_handle_count'] = $item['total_handle_count'] ?? 0;
$item['total_complete_count'] = $item['total_complete_count'] ?? 0;
}
}
$xlsName = '工单统计报表';
$xlsCell = array(
array('nickname', "账号"),
array('total_create_count', "发布工单数"),
array('total_accepted_count', '被接手工单数'),
array('total_handle_count', "接手工单数"),
array('total_complete_count', "完成工单数"),
);
$this->exportAddOperationLog('Statistics/exportWorkOrderStatistics','用户-工单统计-导出');
$this->exportExcel($xlsName, $xlsCell, $list);
}
}