From f6ab43f3f72bb82a3f72054466fabee2656fa4f1 Mon Sep 17 00:00:00 2001 From: sunke <18850253506@163.com> Date: Wed, 13 Nov 2019 11:28:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E5=B8=81=E8=BD=AC=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/DownloadController.class.php | 168 ++++++++---------- 1 file changed, 76 insertions(+), 92 deletions(-) diff --git a/Application/Home/Controller/DownloadController.class.php b/Application/Home/Controller/DownloadController.class.php index 9af6d7ab2..c025bee79 100644 --- a/Application/Home/Controller/DownloadController.class.php +++ b/Application/Home/Controller/DownloadController.class.php @@ -921,70 +921,40 @@ class DownloadController extends BaseController { * @author sunke */ public function coinrecord_data_export() { - $map1['chain'] = ['like','%'.'/'.PID.'/'.'%']; - $rs = M('promote','tab_')->where($map1)->field('id,account,nickname')->select(); - $childPromoteIds = ''; - if(empty($rs)) { - $map['promote_id'] = PID; - }else { - foreach ($rs as $rsKey => $rsValue) { - $id = $rsValue['id']; - $childPromoteIds .= $id.','; + $gameId = I('game_id', 0); + $account = I('account', ''); + $sn = I('sn', ''); + $startTime = I('time_end', ''); + $endTime = I('time_start', ''); + $loginPromote = $this->getLoginPromote(); + $map = ['promote_id' => $loginPromote['id']]; + if ($startTime != '' || $endTime != '') { + if ($startTime != '') { + $map['create_time'] = ['egt', strtotime($startTime. ' 00:00:00')]; + } + if ($endTime != '') { + $map['create_time'] = ['elt', strtotime($endTime. ' 23:59:59')]; } - $childPromoteIds = rtrim($childPromoteIds, ','); - $childPromoteIds .= ',' . PID; - $map['promote_id'] = ['in', $childPromoteIds]; - } - $map["type"] = 2; - $end_time = strtotime(I('time_end')); - $start_time = strtotime(I('time_start')); - if (!empty($end_time) && !empty($start_time)) { - $map['create_time'] = ['between', [$start_time, $end_time + 86400 - 1]]; - } elseif (!empty($start_time)) { - $map['create_time'] = array('gt', $start_time); - } elseif (!empty($end_time)) { - $map['create_time'] = array('lt', $end_time + 86400 - 1); } - - $account = I('account'); - $sn = I('sn'); if($sn) { - $map['sn'] = ['like','%'.$sn.'%']; + $map['sn'] = $sn; } if($account) { - $searchUsers = M('User', 'tab_')->field('id')->where(['account' => ['like', '%' . $account . '%']])->select(); - $searchPromotes = M('Promote', 'tab_')->field('id')->where(['account' => ['like', '%' . $account . '%']])->select(); - if (empty($searchUsers) && empty($searchPromotes)) { - $map['_string'] = '1<>1'; - } - if (empty($searchUsers) && !empty($searchPromotes)) { - $map['source_id'] = ['in', array_column($searchPromotes, 'id')]; - } - if (!empty($searchUsers) && empty($searchPromotes)) { - $map['source_id'] = ['in', array_column($searchUsers, 'id')]; - } - if (!empty($searchUsers) && !empty($searchPromotes)) { - $map['_string'] = '(source_id in (' . implode(',', array_column($searchUsers, 'id')) . ') or' - . '(source_id in (' . implode(',', array_column($searchPromotes, 'id')) . '))'; - } - } - - $searchHandleType = I('handle_type', 0); - if ($searchHandleType) { - if ($searchHandleType == 2) { - $map['source_type'] = 2; - } else { - - } - } - $searchGameId = I('game_id', -1); - if ($searchGameId != -1) { - $map['game_id'] = $searchGameId; - } - + $map1['account'] = ['like','%'.$account.'%']; + $promotesRs = M('promote','tab_')->field('id')->where($map1)->select(); + $idArr = ""; + foreach ($promotesRs as $key => $value) { + $idArr .= intval($value['id']).','; + } + $idArr1 = rtrim($idArr,','); + $map['target_id'] = ['in',$idArr1]; + } + if($gameId) { + $map['game_id'] = $gameId; + } $conditions = json_encode($map,TRUE); $addtime = time(); - $type = "/Home/PromoteCoin/record"; + $type = "/Home/PromoteCoin/transferLogs"; $data = [ 'logid' => 'cr_'.time(), 'admin_id' => PID, @@ -1974,44 +1944,58 @@ class DownloadController extends BaseController { array('create_time',"交易时间"), array('status',"交易状态"), ); - $model = M("PromoteCoin",'tab_'); - $data = $model->where($map)->order('create_time desc')->select(); - $sourcePromoteIds = []; - $sourceUserIds = []; - foreach ($data as $item) { - if ($item['source_type'] == 1) { - $sourcePromoteIds[] = $item['source_id']; - } elseif ($item['source_type'] == 2) { - $sourceUserIds[] = $item['source_id']; - } - } - $sourceUsers = $this->getRecordsByIds(M('User', 'tab_'), $sourceUserIds, ['indexBy' => 'id']); - $sourcePromotes = $this->getRecordsByIds(M('Promote', 'tab_'), $sourcePromoteIds, ['indexBy' => 'id']); + $model = M('promote_coin_transfer_log', 'tab_'); + $logs = $model->where($map)->select(); + $service = new PromoteCoinTransferLogService(); + $gameIds = []; + $promoteIds = []; + $uesrIds = []; + foreach ($logs as $log) { + $gameIds[] = $log['game_id']; + if ($log['target_type'] == 1) { + $promoteIds[] = $log['target_id']; + } + if ($log['target_type'] == 2) { + $uesrIds[] = $log['target_id']; + } + } + $games = []; + $promotes = []; + $users = []; + if (count($gameIds) > 0) { + $games = M('game', 'tab_')->field(['id', 'game_name'])->where(['id' => ['in', $gameIds]])->select(); + } + if (count($promoteIds) > 0) { + $promotes = M('promote', 'tab_')->field(['id', 'account'])->where(['id' => ['in', $promoteIds]])->select(); + } + if (count($uesrIds) > 0) { + $users = M('user', 'tab_')->field(['id', 'account'])->where(['id' => ['in', $uesrIds]])->select(); + } + $users = index_by_column('id', $users); + $promotes = index_by_column('id', $promotes); + $games = index_by_column('id', $games); $records = []; - foreach ($data as $item) { - $sourceName = ''; - $promote = null; - if ($item['source_type'] == 2) { - $sourceName = $sourceUsers[$item['source_id']]['account']; - } elseif ($item['source_type'] == 1) { - $promote = $sourcePromotes[$item['source_id']]; - $sourceName = $sourcePromotes[$item['source_id']]['account']; - } - $handleType = $this->getHandleType($item, $promote); - $records = [ - 'id' => $item['id'], - 'sn' => $item['sn'], - 'account' => $item['id'], - 'game_name' => isset($games[$item['game_id']]) ? $games[$item['game_id']] : '所有游戏', - 'create_time' => date('Y-m-d H:i:s', $item['create_time']), - 'description' => $item['description'], - 'num' => $item['num'], - 'source_name' => $sourceName, - 'handle_type' => $handleType, - 'status' => $item['status'] == 1 ? '成功' : '失败', + foreach ($logs as $log) { + $targetAccount = ''; + if ($log['target_type'] == 1) { + $targetAccount = isset($promotes[$log['target_id']]) ? $promotes[$log['target_id']]['account'] : '未知推广账号'; + } + if ($log['target_type'] == 2) { + $targetAccount = isset($promotes[$log['target_id']]) ? $promotes[$log['target_id']]['account'] : '未知玩家'; + } + $records[] = [ + 'id' => $log['id'], + 'sn' => $log['sn'], + 'target_account' => $targetAccount, + 'game_name' => isset($games[$log['game_id']]) ? $games[$log['game_id']]['game_name'] : '所有游戏', + 'target_type_text' => $service->getTargetTypeText($log['target_type'], $log['target_level']), + 'num' => $log['num'], + 'description' => $log['description'], + 'status_text' => '成功', + 'create_time' => date('Y-m-d H:i:s', $log['create_time']) ]; } - $xlsData[] = $records; + $xlsData = $records; $this->exportExcel($xlsName, $xlsCell, $xlsData,$id); }