| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114 |
- <?php
- namespace App\Http\Controllers\Admin;
- use App\Facade\TableName;
- use App\Http\Controllers\Controller;
- use App\Http\helper\Helper;
- use App\Http\logic\admin\UserLogicController;
- use Illuminate\Http\Request;
- use Illuminate\Support\Carbon;
- use Illuminate\Support\Facades\Cache;
- use Illuminate\Support\Facades\DB;
- use App\Models\AccountsInfo;
- class UserController extends Controller
- {
- //用户查询
- public function userList(Request $request)
- {
- $excel = $request->get('excel');
- $user_id = $request->input('user_id');
- $game_id = $request->post('game_id');
- $nickname = $request->post('nickname');
- $mobile = $request->post('mobile');
- $page = $request->post('page');
- $url = $request->input('url');
- $start_time = $request->post('start_time');
- $end_time = $request->post('end_time');
- $goldmin = $request->post('goldmin');
- $goldmax = $request->post('goldmax');
- $cardmin = $request->post('cardmin');
- $cardmax = $request->post('cardmax');
- $where = [];
- !empty($start_time) ? $where[] = ['ai.RegisterDate', '>=', $start_time] : '';
- !empty($end_time) ? $where[] = ['ai.RegisterDate', '<=', date('Y-m-d', strtotime("$end_time+1day"))] : '';
- !empty($goldmin) ? $where[] = ['gi.Score', '>=', $goldmin] : '';
- !empty($goldmax) ? $where[] = ['gi.Score', '<=', $goldmax] : '';
- !empty($cardmin) ? $where[] = ['gi.Revenue', '>=', $cardmin] : '';
- !empty($cardmax) ? $where[] = ['gi.Revenue', '<=', $cardmax] : '';
- !empty($user_id) ? $where[] = ['ai.UserID', '=', (int)$user_id] : '';
- !empty($game_id) ? $where[] = ['ai.GameID', '=', (int)$game_id] : '';
- !empty($nickname) ? $where[] = ['ai.NickName', 'like', '%' . $nickname . '%'] : '';
- !empty($mobile) ? $where[] = ['ap.PhoneNum', '=', $mobile] : '';
- if ($excel) {
- $cellData = DB::table('QPAccountsDB.dbo.AccountsInfo as ai')
- ->leftJoin('QPAccountsDB.dbo.AccountsInfo as aci', 'ai.SpreaderID', '=', 'aci.UserID')
- ->leftJoin('QPTreasureDB.dbo.GameScoreInfo as gi', 'ai.UserID', '=', 'gi.UserID')
- ->leftJoin('QPAccountsDB.dbo.AccountPhone as ap', 'ai.UserID', '=', 'ap.UserID')
- ->leftJoin('QPAccountsDB.dbo.YN_VIPAccount as v', 'ai.UserID', '=', 'v.UserID')
- ->select('ai.NickName', 'v.Recharge', 'ai.LastLogonDate', 'ai.GameID', 'ai.MemberOrder', 'ai.RegisterDate', 'ai.UserID', 'gi.Score', 'ai.MemberOverDate', 'ap.PhoneNum', 'gi.BankScore', 'ai.Channel', 'ai.PassPortID', 'gi.InsureScore', 'aci.NickName as SpreaderName', 'ai.Compellation', 'gi.Revenue', 'aci.GameID as SpreaderGameID', 'ai.LastLogonMobile', 'ai.Experience', 'aci.UserID as SpreaderUserID')
- ->where($where)
- ->orderBy('ai.UserID', 'ASC')
- ->get();
- foreach ($cellData as $key => &$value) {
- $second = $value->Experience;
- $day = floor($second / (3600 * 24));
- $second = $second % (3600 * 24);//除去整天之后剩余的时间
- $hour = floor($second / 3600);
- $second = $second % 3600;//除去整小时之后剩余的时间
- $minute = floor($second / 60);
- //返回字符串
- $value->Experience = $day . '天' . $hour . '小时' . $minute . '分';
- switch ($value->Channel) {
- case '1':
- $value->Channel = '联运';
- break;
- case '2':
- $value->Channel = '经销商';
- break;
- default:
- $value->Channel = '官方';
- break;
- }
- }
- $title = ['用户昵称', '充值总额', '最后登录时间', '游戏ID', 'VIP等级', '注册时间', '用户编号', '携带金豆', 'VIP过期时间', '手机号', '银行金豆', '推荐渠道', '身份证号', '房卡', '推荐人昵称', '姓名', '福卡', '推荐人ID', '操作系统', '游戏时长', '推荐人编号'];
- $cellData = json_decode(json_encode($cellData), true);
- downloadExcel($cellData, $title, '用户查询' . date('YmdHis'));
- } else {
- $list = DB::table('QPAccountsDB.dbo.AccountsInfo as ai')
- ->leftJoin('QPAccountsDB.dbo.AccountsInfo as aci', 'ai.SpreaderID', '=', 'aci.UserID')
- ->leftJoin('QPTreasureDB.dbo.GameScoreInfo as gi', 'ai.UserID', '=', 'gi.UserID')
- ->leftJoin('QPAccountsDB.dbo.AccountPhone as ap', 'ai.UserID', '=', 'ap.UserID')
- ->leftJoin('QPAccountsDB.dbo.YN_VIPAccount as v', 'ai.UserID', '=', 'v.UserID')
- ->select('v.Recharge', 'ai.UserID', 'ai.GameID', 'ai.NickName', 'ai.SpreaderID', 'ai.LastLogonDate', 'ai.Nullity', 'ai.Channel', 'ai.PlayTimeCount', 'ai.RegisterDate', 'ai.MemberOrder', 'ai.MemberOverDate', 'ai.LastLogonMobile', 'ai.Experience', 'aci.NickName as SpreaderName', 'aci.GameID as SpreaderGameID', 'aci.UserID as SpreaderUserID', 'gi.InsureScore', 'gi.Score', 'gi.BankScore', 'gi.Revenue', 'ap.PhoneNum', 'ai.PassPortID', 'ai.Compellation')
- ->where($where)
- ->orderBy('ai.UserID', 'ASC')
- ->paginate(10);
- foreach ($list as $key => &$value) {
- $second = $value->Experience;
- $day = floor($second / (3600 * 24));
- $second = $second % (3600 * 24);//除去整天之后剩余的时间
- $hour = floor($second / 3600);
- $second = $second % 3600;//除去整小时之后剩余的时间
- $minute = floor($second / 60);
- //返回字符串
- $value->Experience = $day . '天' . $hour . '小时' . $minute . '分';
- switch ($value->Channel) {
- case '1':
- $value->Channel = '联运';
- break;
- case '2':
- $value->Channel = '经销商';
- break;
- default:
- $value->Channel = '官方';
- break;
- }
- }
- return view('admin.user.user_list', ['list' => $list, 'url' => $url, 'user_id' => $user_id, 'game_id' => $game_id, 'nickname' => $nickname, 'mobile' => $mobile, 'start_time' => $start_time, 'end_time' => $end_time, 'goldmin' => $goldmin, 'goldmax' => $goldmax, 'cardmin' => $cardmin, 'cardmax' => $cardmax, 'page' => $page]);
- }
- }
- //用户查询
- public function userLost(Request $request)
- {
- $excel = $request->get('excel',1);
- $page = $request->post('page');
- $start_time = $request->get('start_time',date('Y-m-d',strtotime("-7day")));
- $end_time = $request->get('end_time');
- $goldmin = 2500;
- $where = [['ai.LastLogonDate','<=',date('Y-m-d',strtotime("-4day"))]];
- !empty($start_time) ? $where[] = ['ai.RegisterDate', '>=', $start_time] : '';
- !empty($end_time) ? $where[] = ['ai.RegisterDate', '<=', date('Y-m-d', strtotime("$end_time+1day"))] : '';
- !empty($goldmin) ? $where[] = ['gi.Score', '<>', $goldmin] : '';
- if ($excel) {
- $cellData = DB::table('QPAccountsDB.dbo.AccountsInfo as ai')
- ->leftJoin('QPAccountsDB.dbo.AccountsInfo as aci', 'ai.SpreaderID', '=', 'aci.UserID')
- ->leftJoin('QPTreasureDB.dbo.GameScoreInfo as gi', 'ai.UserID', '=', 'gi.UserID')
- ->leftJoin('QPAccountsDB.dbo.YN_VIPAccount as v', 'ai.UserID', '=', 'v.UserID')
- ->select('ai.NickName', 'v.Recharge','gi.WinCount','gi.LostCount', 'ai.GameID','ai.LastLogonDate','ai.RegisterDate', 'ai.UserID','gi.Score')
- ->where($where)
- ->orderBy('ai.UserID', 'ASC')
- ->get();
- foreach ($cellData as $key => &$value) {
- $gameCount = DB::table(TableName::QPRecordDB() . 'RecordUserGameCount')
- ->where('UserID',$value->UserID)
- ->pluck('Cnt', 'GameID')->toArray();
- $value->x50 = $gameCount[3010];
- $value->x9 = $gameCount[3014];
- $value->yyl = $gameCount[3015];
- $value->wc = $gameCount[3016];
- $value->th = $gameCount[3017];
- $value->trea = $gameCount[3018];
- $value->light = $gameCount[3019];
- }
- $title = ['用户昵称', '充值总额','游戏赢的次数','游戏输的次数', '最后登录时间','注册时间', 'GameID','携带金豆','50线','9线','摇摇乐','世界杯','雷神','宝藏','闪电'];
- $cellData = json_decode(json_encode($cellData), true);
- downloadExcel($cellData, $title, '用户查询' . date('YmdHis'));
- } else {
- $list = DB::table('QPAccountsDB.dbo.AccountsInfo as ai')
- ->leftJoin('QPAccountsDB.dbo.AccountsInfo as aci', 'ai.SpreaderID', '=', 'aci.UserID')
- ->leftJoin('QPTreasureDB.dbo.GameScoreInfo as gi', 'ai.UserID', '=', 'gi.UserID')
- ->leftJoin('QPAccountsDB.dbo.YN_VIPAccount as v', 'ai.UserID', '=', 'v.UserID')
- ->select('ai.NickName', 'v.Recharge','gi.WinCount','gi.LostCount', 'ai.GameID','ai.LastLogonDate','ai.RegisterDate', 'ai.UserID','gi.Score')
- ->where($where)
- ->orderBy('ai.UserID', 'ASC')
- ->get();
- foreach ($list as $key => &$value) {
- $gameCount = DB::table(TableName::QPRecordDB() . 'RecordUserGameCount')
- ->where('UserID',$value->UserID)
- ->pluck('Cnt', 'GameID')->toArray();
- $value->x50 = $gameCount[3010];
- $value->x9 = $gameCount[3014];
- $value->yyl = $gameCount[3015];
- $value->wc = $gameCount[3016];
- $value->th = $gameCount[3017];
- $value->trea = $gameCount[3018];
- $value->light = $gameCount[3019];
- }
- var_dump($list);
- return view('admin.user.user_lost', ['list' => $list,'start_time' => $start_time, 'end_time' => $end_time, 'page' => $page]);
- }
- }
- //用户分布
- public function userClassify(Request $request)
- {
- $player_list = DB::table('QPAccountsDB.dbo.AccountsInfo as ai')
- ->leftJoin('QPAccountsDB.dbo.YN_VIPAccount as va', 'ai.UserID', '=', 'va.UserID')
- ->where('IsAndroid', 0)
- ->whereIn('LastLogonMobile', ['Android', 'IOS'])
- ->select('ai.LastLogonMobile', 'ai.UserID', 'va.Recharge', 'ai.LastLogonDate', 'ai.Gender')
- // ->select(DB::raw("count('ai.*') as num,ai.LastLogonMobile,sum('va.Recharge') as m"))
- // ->groupBy('LastLogonMobile')
- ->get();
- $nowtime = time();
- $android_num = $ios_num = 0;
- $android_lively_num = $ios_lively_num = 0;
- $android_recharge = $ios_recharge = 0;
- $android_recharge_num = $ios_recharge_num = 0;
- $android_man = $android_woman = $ios_man = $ios_woman = 0;
- $android_arppu = $ios_arppu = $ios_arpu = $android_arpu = $android_man_ratio = $android_woman_ratio
- = $ios_man_ratio = $ios_woman_ratio = $android_recharge_ratio = $ios_recharge_ratio = 0;
- foreach ($player_list as $key => $value) {
- if ($value->LastLogonMobile === 'Android') {
- $android_num += 1;//安卓用户数
- $time = ceil(($nowtime - strtotime($value->LastLogonDate)) / 86400);
- if ($time <= 7) {
- $android_lively_num += 1;//安卓七日活跃用户数
- }
- if (!empty($value->Recharge)) {
- $android_recharge += $value->Recharge;//安卓累计充值金额
- $android_recharge_num += 1;//安卓充值用户数
- }
- if ($value->Gender == 1) {
- $android_man += 1;
- } else {
- $android_woman += 1;
- }
- } else {
- $ios_num += 1;//IOS用户数
- $time = ceil(($nowtime - strtotime($value->LastLogonDate)) / 86400);
- if ($time <= 7) {
- $ios_lively_num += 1;//IOS七日活跃用户数
- }
- if (!empty($value->Recharge)) {
- $ios_recharge += $value->Recharge;
- $ios_recharge_num += 1;
- }
- if ($value->Gender == 1) {
- $ios_man += 1;
- } else {
- $ios_woman += 1;
- }
- }
- }
- $android_num ? $android_man_ratio = round(($android_man / $android_num) * 100, 2) . '%' : '0%';//安卓男生比例
- $android_num ? $android_woman_ratio = round(($android_woman / $android_num) * 100, 2) . '%' : '0%';//安卓女生比例
- $ios_num ? $ios_man_ratio = round(($ios_man / $ios_num) * 100, 2) . '%' : '0%';//ios男生比例
- $ios_num ? $ios_woman_ratio = round(($ios_woman / $ios_num) * 100, 2) . '%' : '0%';//ios女生比例
- $android_num ? $android_recharge_ratio = round(($android_recharge_num / $android_num) * 100, 2) . '%' : '0%';//安卓充值率
- $ios_num ? $ios_recharge_ratio = round(($ios_recharge_num / $ios_num) * 100, 2) . '%' : '0%';//ios充值率
- $android_lively_num ? $android_arpu = round(($android_recharge / $android_lively_num), 2) : 0;//安卓ARPU
- $ios_lively_num ? $ios_arpu = round(($ios_recharge / $ios_lively_num), 2) : 0;//ios ARPU
- $android_recharge_num ? $android_arppu = round(($android_recharge / $android_recharge_num), 2) : 0;//ios ARPU
- $ios_recharge_num ? $ios_arppu = round(($ios_recharge / $ios_recharge_num), 2) : 0;//ios ARPU
- $list = [
- [
- 'type' => '安卓',
- 'num' => $android_num,
- 'lively_num' => $android_lively_num,
- 'recharge' => number_format($android_recharge),
- 'recharge_num' => $android_recharge_num,
- 'recharge_ratio' => $android_recharge_ratio,
- 'arpu' => $android_arpu,
- 'arppu' => $android_arppu,
- 'ratio' => '男' . $android_man_ratio . '女' . $android_woman_ratio,
- ],
- [
- 'type' => '苹果',
- 'num' => $ios_num,
- 'lively_num' => $ios_lively_num,
- 'recharge' => number_format($ios_recharge),
- 'recharge_num' => $ios_recharge_num,
- 'recharge_ratio' => $ios_recharge_ratio,
- 'arpu' => $ios_arpu,
- 'arppu' => $ios_arppu,
- 'ratio' => '男' . $ios_man_ratio . '女' . $ios_woman_ratio,
- ]
- ];
- return view('admin.user.user_classify', ['list' => $list]);
- }
- //购买记录
- public function purchaseHistoryList(Request $request, $id)
- {
- $start_time = $request->post('start_time');
- $end_time = $request->post('end_time');
- $order_title = $request->post('order_title');
- $order_sn = $request->post('order_sn');
- $where[] = ['user_id', '=', $id];
- !empty($start_time) ? $where[] = ['order.pay_at', '>=', $start_time] : '';
- !empty($end_time) ? $where[] = ['order.pay_at', '<=', date('Y-m-d', strtotime("$end_time+1day"))] : '';
- !empty($order_title) ? $where[] = ['order.order_title', 'like', '%' . $order_title . '%'] : '';
- !empty($order_sn) ? $where[] = ['order.order_sn', '=', $order_sn] : '';
- $list = DB::connection('write')->table('order')
- ->leftJoin('QPAccountsDB.dbo.AccountsInfo as ai', 'order.user_id', '=', 'ai.UserID')
- ->select('order.finished_at', 'order.order_sn', 'order.payment_sn', 'order.trade_sn', 'order.order_title', 'order.amount', 'ai.GameID', 'ai.NickName')
- ->where($where)
- ->orderby('order.finished_at', 'desc')
- ->WhereNotNull('pay_at')
- ->paginate(20);
- $nick_name = '';
- $game_id = '';
- !empty($list[0]->NickName) ? $nick_name = $list[0]->NickName : '';
- !empty($list[0]->GameID) ? $game_id = $list[0]->GameID : '';
- return view('admin.user.purchase', ['list' => $list, 'nick_name' => $nick_name, 'game_id' => $game_id, 'order_title' => $order_title, 'order_sn' => $order_sn, 'start_time' => $start_time, 'end_time' => $end_time, 'user_id' => $id]);
- }
- //游戏记录
- public function gameHistoryList(Request $request, $id)
- {
- $start_time = $request->post('start_time');
- $end_time = $request->post('end_time');
- $game = $request->post('game');
- $type = $request->post('type');
- $where[] = ['rs.UserID', '=', $id];
- !empty($start_time) ? $where[] = ['rs.InsertTime', '>=', $start_time] : '';
- !empty($end_time) ? $where[] = ['rs.InsertTime', '<=', date('Y-m-d', strtotime("$end_time+1day"))] : '';
- !empty($game) ? $where[] = ['gi.GameID', '=', $game] : '';
- !empty($type) ? $where[] = ['gi.SortID', '=', $type] : '';
- $list = DB::table('QPTreasureDB.dbo.RecordDrawScore as rs')
- ->leftJoin('QPAccountsDB.dbo.AccountsInfo as ai', 'rs.UserID', '=', 'ai.UserID')
- ->leftJoin('QPTreasureDB.dbo.RecordDrawInfo as ri', 'rs.DrawID', '=', 'ri.DrawID')
- ->leftJoin('QPPlatformDB.dbo.GameRoomInfo as gi', 'ri.ServerID', '=', 'gi.ServerID')
- ->select('rs.DrawID', 'rs.PlayTimeCount', 'rs.Score', 'rs.Revenue', 'rs.InsertTime', 'ai.NickName', 'ai.GameID', 'ri.ServerID', 'gi.ServerName', 'gi.SortID')
- ->where($where)
- ->orderBy('rs.InsertTime', 'desc')
- ->paginate(20);
- foreach ($list as $key => &$value) {
- $value->Score = number_format($value->Score);
- if (!empty($value)) {
- switch ($value->SortID) {
- case '1':
- $value->SortID = '初级';
- break;
- case '2':
- $value->SortID = '普通';
- break;
- case '4':
- $value->SortID = '中级';
- break;
- case '8':
- $value->SortID = '高级';
- break;
- case '64':
- $value->SortID = '包厢';
- break;
- }
- }
- }
- $nick_name = '';
- $game_id = '';
- !empty($list[0]->NickName) ? $nick_name = $list[0]->NickName : '';
- !empty($list[0]->GameID) ? $game_id = $list[0]->GameID : '';
- $room_type = ['1' => '初级', '2' => '普通', '4' => '中级', '8' => '高级', '64' => '包厢'];
- $game_name = DB::connection('write')->table('QPPlatformDB.dbo.GameGameItem')->pluck('GameName', 'GameID');//单选框数据
- $level = ['1' => '初级', '2' => '普通', '4' => '中级', '8' => '高级', '64' => '包厢',];
- return view('admin.user.game', ['list' => $list, 'game' => $game, 'start_time' => $start_time, 'end_time' => $end_time, 'type' => $type, 'user_id' => $id, 'nick_name' => $nick_name, 'game_id' => $game_id, 'game_name' => $game_name, 'room_type' => $room_type]);
- }
- //金豆记录
- public function scoreHistoryList(Request $request, $id)
- {
- $start_time = $request->post('start_time');
- $end_time = $request->post('end_time');
- $describe = $request->post('describe');
- $game = $request->post('game');
- $type = $request->post('type');
- $where[] = ['si.UserID', '=', $id];
- !empty($start_time) ? $where[] = ['si.UpdateTime', '>=', $start_time . ' 00:00:00'] : '';
- !empty($end_time) ? $where[] = ['si.UpdateTime', '<=', $end_time . ' 23:59:59'] : '';
- !empty($describe) ? $where[] = ['Describe', 'like', '%' . trim($describe, " ") . '%'] : '';
- !empty($game) ? $where[] = ['ri.GameID', '=', $game] : '';
- !empty($type) ? $where[] = ['ri.SortID', '=', $type] : '';
- ////////////////////////
- // 查询范围需要在同一个月份,暂时不支持跨月份查询
- $from_mm = intval(date('Ym', strtotime($start_time)));
- $to_mm = intval(date('Ym', strtotime($end_time)));
- if ($from_mm != $to_mm) {
- throw new Exception('暂不支持跨月查询,开始时间和结束时间请选择相同月份');
- }
- //确定有效表范围,从202104月开始到当前月
- if ($from_mm < 202104 || $from_mm > intval(date('Ym'))) {
- $from_mm = date('Ym');
- }
- $table = 'QPTreasureDB.dbo.YN_RecordScoreInfo_' . $from_mm;
- //////////////////////
- $list = DB::table($table . ' as si')
- ->leftJoin('QPAccountsDB.dbo.AccountsInfo as ai', 'si.UserID', '=', 'ai.UserID')
- ->leftJoin('QPPlatformDB.dbo.GameRoomInfo as ri', 'ri.ServerID', '=', 'si.ServerID')
- ->join('QPRecordDB.dbo.YN_RecordScoreConfig as sc', 'sc.Reason', '=', 'si.Reason')
- ->select('si.UserID', 'si.BeforeScore', 'si.ChangeScore', 'si.AfterScore', 'si.UpdateTime', 'ai.NickName', 'ai.GameID', 'sc.Describe', 'ri.ServerName', 'ri.SortID')
- ->where($where)
- ->orderBy('UpdateTime', 'desc')
- ->paginate(10);
- foreach ($list as $key => &$value) {
- $value->BeforeScore = number_format($value->BeforeScore);
- $value->ChangeScore = number_format($value->ChangeScore);
- $value->AfterScore = number_format($value->AfterScore);
- if (!empty($value)) {
- switch ($value->SortID) {
- case '1':
- $value->SortID = '初级';
- break;
- case '2':
- $value->SortID = '普通';
- break;
- case '4':
- $value->SortID = '中级';
- break;
- case '8':
- $value->SortID = '高级';
- break;
- case '64':
- $value->SortID = '包厢';
- break;
- }
- }
- }
- $nick_name = '';
- $game_id = '';
- !empty($list[0]->NickName) ? $nick_name = $list[0]->NickName : '';
- !empty($list[0]->GameID) ? $game_id = $list[0]->GameID : '';
- $room_type = ['1' => '初级', '2' => '普通', '4' => '中级', '8' => '高级', '64' => '包厢'];
- $game_name = DB::connection('write')->table('QPPlatformDB.dbo.GameGameItem')->pluck('GameName', 'GameID');//单选框数据
- return view('admin.user.score', ['list' => $list, 'describe' => $describe, 'start_time' => $start_time, 'end_time' => $end_time, 'user_id' => $id, 'nick_name' => $nick_name, 'game_id' => $game_id, 'game' => $game, 'type' => $type, 'game_name' => $game_name, 'room_type' => $room_type]);
- }
- //福卡记录
- public function cardHistoryList(Request $request, $id)
- {
- $start_time = $request->post('start_time');
- $end_time = $request->post('end_time');
- $describe = $request->post('describe');
- $where[] = ['si.UserID', '=', $id];
- !empty($start_time) ? $where[] = ['si.UpdateTime', '>=', $start_time] : '';
- !empty($end_time) ? $where[] = ['si.UpdateTime', '<=', date('Y-m-d', strtotime("$end_time+1day"))] : '';
- !empty($describe) ? $where[] = ['Describe', 'like', '%' . trim($describe, " ") . '%'] : '';
- $list = DB::connection('write')->table('QPRecordDB.dbo.YN_RecordRevenueInfo as si')
- ->leftJoin('QPRecordDB.dbo.YN_RecordScoreConfig as sc', 'sc.Reason', '=', 'si.Reason')
- ->select('si.*', 'sc.Describe')
- ->where($where)
- ->orderBy('si.UpdateTime', 'desc')
- ->paginate(10);
- foreach ($list as $key => &$value) {
- $value->BeforeRevenue = number_format($value->BeforeRevenue);
- $value->ChangeRevenue = number_format($value->ChangeRevenue);
- $value->AfterRevenue = number_format($value->AfterRevenue);
- }
- $describe_list = DB::table('QPRecordDB.dbo.YN_RecordScoreConfig')->pluck('Describe');
- return view('admin.user.card', ['list' => $list, 'describe' => $describe, 'describe_list' => $describe_list, 'start_time' => $start_time, 'end_time' => $end_time, 'user_id' => $id]);
- }
- //冻结玩家
- public function freezeUser(Request $request, $id)
- {
- $result = DB::table('QPAccountsDB.dbo.AccountsInfo')
- ->where('UserID', $id)->update(['Nullity' => $request->post('nullity')]);
- if ($result) {
- return $this->json(200, "处理成功");
- } else {
- return $this->json(500, '处理失败,请重试');
- }
- }
- //VIP等级分布
- public function VipClassify(Request $request)
- {
- $all = AccountsInfo::selectRaw('MemberOrder,COUNT(*) AS VipAllCount')
- ->groupBy('MemberOrder')
- ->orderBy('MemberOrder')
- ->get()->toarray();
- $now = AccountsInfo::selectRaw('MemberOrder,COUNT(*) AS VipNowCount')
- ->whereRaw('MemberOverDate>GETDATE()')
- ->groupBy('MemberOrder')
- ->orderBy('MemberOrder')
- ->get()->toarray();
- foreach ($all as $key => &$value) {
- isset($now[$key]) ? $value['VipNowCount'] = $now[$key]['VipNowCount'] : $value['VipNowCount'] = 0;
- isset($now[$key]) ? $count = $now[$key]['VipNowCount'] : $count = 0;
- $value['VipOldCount'] = $value['VipAllCount'] - $count;
- }
- return view('admin.user.vip_classify', ['list' => $all]);
- }
- public function createHexiao(Request $request)
- {
- $params = $request->all();
- if ($params) {
- if (!$params['password'] || !$params['name'] || !$params['repwd'] || !$params['wx_account']) {
- return view('admin.user.create_hexiao', ['msg' => '缺少参数', 'status' => 1]);
- }
- if ($params['password'] !== $params['repwd']) {
- return view('admin.user.create_hexiao', ['msg' => '2次密码输入不一致', 'status' => 1]);
- }
- if (DB::table('agent.dbo.agent')->where('wx_account', $params['wx_account'])->first()) {
- return ['status' => false, 'message' => '登录账号不能重复'];
- }
- $password = bcrypt($params['password']);
- $data = [
- 'role_id' => 0,
- 'parent_id' => 0,
- 'name' => $params['name'],
- 'wx_account' => $params['wx_account'],
- 'mobile' => 0,
- 'id_card' => 0,
- 'status' => 1,
- 'password' => $password,
- 'num_account' => $this->get_num_account(),
- 'hexiao' => 1,
- ];
- if ($a = DB::table('agent.dbo.agent')->insert($data)) {
- //var_dump($a);
- $agent_id = DB::getPdo()->lastInsertId();
- DB::table('agent.dbo.agent_app')->insert([
- 'agent_id' => $agent_id,
- 'app_id' => 1
- ]);
- return view('admin.user.create_hexiao', ['msg' => '创建成功', 'status' => 1]);
- } else {
- return ['status' => false, 'message' => '创建失败', 'status' => 1];
- }
- }
- return view('admin.user.create_hexiao', ['msg' => '创建成功', 'status' => 0]);
- }
- private function get_num_account()
- {
- /* 选择一个随机的方案 */
- mt_srand((double)microtime() * 1000000000);
- $num_account = str_pad(mt_rand(1, 99999), 6, STR_PAD_LEFT);
- $agent = DB::table('agent.dbo.agent')->select('num_account')->where(array('num_account' => $num_account))->first();
- if (!$agent) {
- return $num_account;
- }
- /* 如果有重复的,则重新生成 */
- return $this->get_num_account();
- }
- //全民推广查询
- public function userSpreaderList(Request $request)
- {
- $game_id = $request->get('game_id');
- $end_time = $request->input('end_time');
- $start_time = $request->input('start_time');
- $where = [];
- if (empty($start_time)) {
- $start_time = date('Y-m-d', strtotime("-9 days"));
- $where[] = ['RegisterDate', '>=', $start_time];
- } else {
- $where[] = ['RegisterDate', '>=', $start_time];
- }
- if (empty($end_time)) {
- $where[] = ['RegisterDate', '<=', date('Y-m-d')];
- $end_time = date('Y-m-d');
- } else {
- $where[] = ['RegisterDate', '<=', $end_time];
- }
- $user_info = DB::table('QPAccountsDB.dbo.AccountsInfo')
- ->select('NickName', 'UserID')
- ->where('GameID', $game_id)
- ->first();
- if (empty($user_info)) {
- return view('admin.user.spreaders', ['list' => [], 'game_id' => $game_id, 'start_time' => $start_time, 'end_time' => $end_time]);
- }
- $user_id = $user_info->UserID;
- !empty($user_id) ? $where[] = ['SpreaderID', '=', $user_id] : '';
- //推广员姓名
- $name = DB::table('agent')->Where('UserID', $user_id)->value('name');
- //推广总用户数
- $children_count = DB::table('QPAccountsDB.dbo.AccountsInfo')
- ->where($where)
- ->count();
- //活跃用户
- $live_users = DB::table('QPAccountsDB.dbo.AccountsInfo')
- ->where($where)
- ->where('LastLogonDate', '>=', date('Y-m-d', strtotime('-7 days')))
- ->count();
- //有效用户
- $eff_user = DB::table('QPAccountsDB.dbo.AccountsInfo')
- ->where($where)
- ->where('Experience', '>=', 6000)
- ->count();
- //流失用户
- $sleep_users = DB::table('QPAccountsDB.dbo.AccountsInfo')
- ->where($where)
- ->where('LastLogonDate', '<=', date('Y-m-d', strtotime('-7 days')))
- ->count();
- //已提收益
- $gold = DB::table('QPAccountsDB.dbo.YN_Withdrawal')
- ->selectRaw('sum(Gold) as gold')
- ->where('UserID', $user_id)
- ->value('gold');
- //计提收益
- $revenue = DB::table('QPAccountsDB.dbo.YN_Agent')
- ->where('UserID', $user_id)
- ->value('Revenue');
- //总收益
- $revenue_sum = DB::table('QPTreasureDB.dbo.YN_HistoryPerformance')
- ->select(DB::raw('sum(ProfitGold0+ProfitGold1+ProfitGold2) as revenue_sum'))
- ->where('UserID', $user_id)
- ->where('BalanceDate', '>=', $start_time)
- ->where('BalanceDate', '<=', $end_time)
- ->value('revenue_sum');
- $result = [
- 'user_id' => $user_id,
- 'game_id' => $game_id,
- 'nick_name' => $user_info->NickName,
- 'name' => $name,
- 'children_count' => $children_count,
- 'live_users' => $live_users,
- 'eff_user' => $eff_user,
- 'sleep_users' => $sleep_users,
- 'gold' => $gold,
- 'revenue' => $revenue,
- 'revenue_sum' => $revenue_sum,
- ];
- return view('admin.user.spreaders', ['list' => $result, 'game_id' => $game_id, 'start_time' => $start_time, 'end_time' => $end_time]);
- }
- //每日推广数据
- public function everydaySpreaderList(Request $request, $user_id)
- {
- $end_time = $request->input('end_time');
- $start_time = $request->input('start_time');
- $where = [];
- !empty($user_id) ? $where[] = ['SpreaderID', '=', $user_id] : '';
- if (empty($start_time)) {
- $start_time = date('Y-m-d', strtotime("-50days"));
- $where[] = ['RegisterDate', '>=', $start_time];
- } else {
- $where[] = ['RegisterDate', '>=', $start_time];
- }
- if (empty($end_time)) {
- $where[] = ['RegisterDate', '<=', date('Y-m-d')];
- $end_time = date('Y-m-d');
- } else {
- $where[] = ['RegisterDate', '<=', $end_time];
- }
- $begintime = strtotime($start_time);
- $endtime = strtotime($end_time);
- for ($start = $begintime; $start <= $endtime; $start += 24 * 3600) {
- $date_arr[] = ['date' => date("Y-m-d", $start)];
- }
- $user_info = DB::table('QPAccountsDB.dbo.AccountsInfo')
- ->select('NickName', 'GameID')
- ->where('UserID', $user_id)
- ->first();
- //每日新增
- $add_users_list = DB::table('QPAccountsDB.dbo.AccountsInfo')
- ->selectRaw('CONVERT(varchar(100),RegisterDate,23) as date,count(*) as count')
- ->where($where)
- ->where('SpreaderID', $user_id)
- ->groupBy(DB::raw('CONVERT(varchar(100),RegisterDate,23)'))
- ->get();
- // print_r($add_users_list);exit;
- //每日收益
- $revenue_sum_list = DB::table('QPTreasureDB.dbo.YN_HistoryPerformance')
- ->selectRaw('BalanceDate,sum(ProfitGold0+ProfitGold1+ProfitGold2) as revenue_sum')
- ->where('BalanceDate', '>=', $start_time)
- ->where('BalanceDate', '<=', $end_time)
- ->where('UserID', $user_id)
- ->groupBy('BalanceDate')
- ->get();
- foreach ($revenue_sum_list as $key => $value) {
- $revenue_sum[$value->BalanceDate] = $value->revenue_sum;
- }
- $add_users = [];
- foreach ($add_users_list as $key => $value) {
- $add_users[$value->date] = $value->count;
- }
- $retain_users = DB::table('QPAccountsDB.dbo.AccountsInfo')
- ->select('UserID', DB::raw('CONVERT(varchar(100),RegisterDate,23) as date'))
- ->where('SpreaderID', $user_id)
- ->whereIn(DB::raw('CONVERT(varchar(100),RegisterDate,23)'), $date_arr)
- ->get();
- foreach ($date_arr as $key => &$value) {
- if (isset($add_users[$value['date']])) {
- $value['count'] = $add_users[$value['date']];
- } else {
- $value['count'] = 0;
- }
- if (isset($revenue_sum[$value['date']])) {
- $value['revenue_sum'] = $revenue_sum[$value['date']];
- } else {
- $value['revenue_sum'] = 0;
- }
- $date = $value['date'];
- $retain_users = DB::table('QPAccountsDB.dbo.AccountsInfo')
- ->select('UserID', DB::raw('CONVERT(varchar(100),RegisterDate,23) as date'))
- ->where('SpreaderID', $user_id)
- ->where(DB::raw('CONVERT(varchar(100),RegisterDate,23)'), date('Y-m-d', strtotime("$date-2 days")))
- // ->groupBy(DB::raw('CONVERT(varchar(100),RegisterDate,23)'))
- ->get()
- ->toArray();
- $count = 0;
- if ($retain_users) {
- foreach ($retain_users as $k => $v) {
- $count += DB::table('QPAccountsDB.dbo.AccountsInfo')
- ->where('UserID', $v->UserID)
- ->where(DB::raw('CONVERT(varchar(100),LastLogonDate,23)'), date('Y-m-d', strtotime("$v->date+1 days")))
- ->count();
- }
- }
- //每日流失
- $sleep_users = DB::table('QPAccountsDB.dbo.AccountsInfo')
- ->where('SpreaderID', $user_id)
- ->where('LastLogonDate', '<=', date('Y-m-d', strtotime("$date-7 days")))
- ->count();
- $value['sleep'] = $sleep_users;
- $value['retain'] = $count;
- }
- return view('admin.user.everyday_spreaders', ['list' => $date_arr, 'user_id' => $user_id, 'start_time' => $start_time, 'end_time' => $end_time, 'user_info' => $user_info]);
- }
- //下级推广数据
- public function subordinateList(Request $request, $user_id)
- {
- $end_time = $request->input('end_time');
- $start_time = $request->input('start_time');
- $where = [];
- !empty($user_id) ? $where[] = ['ai.SpreaderID', '=', $user_id] : '';
- if (empty($start_time)) {
- $start_time = date('Y-m-d', strtotime("-100days"));
- $where[] = ['ai.RegisterDate', '>=', $start_time];
- } else {
- $where[] = ['ai.RegisterDate', '>=', $start_time];
- }
- if (empty($end_time)) {
- $where[] = ['ai.RegisterDate', '<=', date('Y-m-d')];
- $end_time = date('Y-m-d');
- } else {
- $where[] = ['ai.RegisterDate', '<=', $end_time];
- }
- $user_info = DB::table('QPAccountsDB.dbo.AccountsInfo')
- ->select('NickName', 'GameID')
- ->where('UserID', $user_id)
- ->first();
- $add_users_list = DB::table('QPAccountsDB.dbo.AccountsInfo as ai')
- ->leftJoin('QPAccountsDB.dbo.AccountsInfo as ais', 'ais.SpreaderID', '=', 'ai.UserID')
- ->selectRaw('ai.UserID,ai.NickName,count(ais.UserID) as count')
- ->where($where)
- ->groupBy('ai.UserID', 'ai.NickName')
- // ->get();
- ->paginate(10);
- $add_users_val = array_column(json_decode(json_encode($add_users_list), true)['data'], 'UserID');
- // $add_users_val = array_column(json_decode(json_encode($add_users_list),true),'UserID');
- // print_r($add_users_val);
- // 活跃用户
- $live_list = DB::table('QPAccountsDB.dbo.AccountsInfo')
- ->selectRaw('SpreaderID,count(*) as count')
- ->where('RegisterDate', '>=', $start_time)
- ->where('RegisterDate', '<=', $end_time)
- ->whereIn('SpreaderID', $add_users_val)
- ->where('LastLogonDate', '>=', date('Y-m-d', strtotime('-7 days')))
- ->groupBy('SpreaderID')
- ->get();
- $lives = [];
- foreach ($live_list as $key => $value) {
- $lives[$value->SpreaderID] = $value->count;
- }
- //收益
- $revenue_sum = DB::table('QPTreasureDB.dbo.YN_HistoryPerformance')
- ->selectRaw('UserID,sum(ProfitGold0+ProfitGold1+ProfitGold2) as revenue_sum')
- ->whereIn('UserID', $add_users_val)
- ->where('BalanceDate', '>=', $start_time)
- ->where('BalanceDate', '<=', $end_time)
- ->groupBy('UserID')
- ->get();
- $revenue = [];
- foreach ($revenue_sum as $key => $value) {
- $revenue[$value->UserID] = $value->revenue_sum;
- }
- foreach ($add_users_list as $key => &$value) {
- if (isset($lives[$value->UserID])) {
- $value->live = $lives[$value->UserID];
- } else {
- $value->live = 0;
- }
- if (isset($revenue[$value->UserID])) {
- $value->revenue = $revenue[$value->UserID];
- } else {
- $value->revenue = 0;
- }
- }
- return view('admin.user.subordinate', ['list' => $add_users_list, 'user_id' => $user_id, 'start_time' => $start_time, 'end_time' => $end_time, 'user_info' => $user_info]);
- }
- //核销查询
- public function verificationList(Request $request)
- {
- $end_time = $request->input('end_time');
- $start_time = $request->input('start_time');
- $user_id = $request->input('user_id');
- $where = [];
- $where[] = ['code.State', '=', 1];
- !empty($user_id) ? $where[] = ['code.agent_id', '=', $user_id] : '';
- if (empty($start_time)) {
- $start_time = date('Y-m-d');
- $where[] = ['code.UpdateTime', '>=', $start_time];
- } else {
- $where[] = ['code.UpdateTime', '>=', $start_time];
- }
- if (empty($end_time)) {
- $where[] = ['code.UpdateTime', '<=', date('Y-m-d', strtotime("+1 days"))];
- $end_time = date('Y-m-d');
- } else {
- $where[] = ['code.UpdateTime', '<=', $end_time];
- }
- $list = DB::table('QPAccountsDB.dbo.YN_UniqueCode as code')
- ->leftJoin('QPAccountsDB.dbo.YN_MatchProp as prop', 'code.PropID', '=', 'prop.PropID')
- ->leftJoin('QPAccountsDB.dbo.AccountsInfo as account', 'code.UserID', '=', 'account.UserID')
- ->leftJoin('agent.dbo.agent as agent', 'code.agent_id', '=', 'agent.id')
- ->selectRaw('account.NickName,prop.PropName,prop.Description,agent.name,code.UpdateTime,code.agent_id')
- ->where($where)
- ->orderBy('code.UpdateTime', 'desc')
- ->paginate(10);
- return view('admin.user.verification', ['list' => $list, 'user_id' => $user_id, 'start_time' => $start_time, 'end_time' => $end_time]);
- }
- // 用户金额变化明细
- public function scoreChange(Request $request)
- {
- $start_time = $request->get('start_time');
- $end_time = $request->get('end_time');
- $describe = (int)$request->get('describe') ?: '';
- $UserID = (int)$request->get('UserID') ?: '';
- $ChangeScoreMin = $request->ChangeScoreMin;
- $ChangeScoreMax = $request->ChangeScoreMax;
- $ChangeScoreSort = $request->ChangeScoreSort ?: '';
- $r = (new UserLogicController())->scoreChange($start_time, $end_time, $describe, $UserID, $ChangeScoreMin, $ChangeScoreMax, $ChangeScoreSort);
- return view('admin.user.score_change', $r);
- }
- // 绑定关系查询
- public function bind_list(Request $request)
- {
- $start_time = $request->start_time ?: '';
- $end_time = $request->end_time ?: '';
- $Higher1ID = $request->Higher1ID ?: '';
- $Higher2ID = $request->Higher2ID ?: '';
- $SpreaderID = $request->SpreaderID ?: '';
- // 跳转页面条件
- $source = $request->source ?: 1;
- $NickName = $request->NickName ?: '';
- $GameID = $request->GameID ?: '';
- $mobile = $request->mobile ?: '';
- $Type = $request->Type ?: '';
- $Sort = $request->Sort ?: '';
- $FinalScoreSort = $request->FinalScoreSort ?: '';
- $UserID = $request->UserID ?: '';
- $result = (new UserLogicController())->bind_list(
- $start_time,
- $end_time,
- $UserID,
- $Higher1ID,
- $Higher2ID,
- $SpreaderID,
- $request
- );
- $result['source'] = $source;
- $result['NickName'] = $NickName;
- $result['GameID'] = $GameID;
- $result['mobile'] = $mobile;
- $result['Type'] = $Type;
- $result['Sort'] = $Sort;
- $result['FinalScoreSort'] = $FinalScoreSort;
- $result['request'] = $request;
- if (empty($Higher1ID) && empty($Higher2ID)) {
- return view('admin.user.bind_list', $result);
- } else {
- return view('admin.user.bind_child_list', $result);
- }
- }
- public function user_tab($tab_id)
- {
- $explain = Cache::remember($tab_id, Carbon::tomorrow(), function () use ($tab_id) {
- return $explain = DB::table('QPAccountsDB.dbo.AccountsTabExplain')
- ->where('TabID', $tab_id)
- ->value('Explain');
- });
- return apiReturnSuc($explain);
- }
- // 每日绑定查询
- public function dailyBinding(Request $request)
- {
- $start_time = str_replace('T', ' ', $request->start_time) ?: date('Y-m-d 00:00:00');
- $end_time = str_replace('T', ' ', $request->end_time) ?: date('Y-m-d 23:59:59');
- $spreaderID = $request->SpreaderID ?: '';
- $GameID = $request->GameID ?: '';
- $date = $request->date ?: '';
- switch ($date) {
- case 1:
- $start_time = date('Y-m-d 00:00:00');
- break;
- case 2:
- $start_time = date('Y-m-d 00:00:00', strtotime('-1 day'));
- $end_time = date('Y-m-d 23:59:59', strtotime('-1 day'));
- break;
- case 3:
- //当前日期
- $sdefaultDate = date("Y-m-d 00:00:00");
- // 1表示每周星期一为开始日期 0表示每周日为开始日期
- $first = 1;
- //获取当前周的第几天 周日是 0 周一到周六是 1 - 6
- $w = date('w', strtotime($sdefaultDate));
- $start_time = date('Y-m-d 00:00:00', strtotime("$sdefaultDate -" . ($w ? $w - $first : 6) . ' days'));
- break;
- case 4:
- $start_time = date("Y-m-01 00:00:00");
- break;
- }
- $where = [];
- !empty($start_time) && $where[] = ['ai.RegisterDate', '>=', $start_time];
- !empty($end_time) && $where[] = ['ai.RegisterDate', '<=', $end_time];
- !empty($spreaderID) && $where[] = ['ai1.GameID', $spreaderID];
- !empty($GameID) && $where[] = ['ai.GameID', $GameID];
- $list = DB::connection('read')->table('QPAccountsDB.dbo.UserAgent as ua')
- ->join('QPAccountsDB.dbo.AccountsInfo as ai', 'ua.UserID', 'ai.UserID')
- ->join('QPAccountsDB.dbo.AccountsInfo as ai1', 'ua.Higher1ID', 'ai1.UserID')
- ->select('ai.GameID', 'ai.UserID', 'ai.RegisterDate', 'ai.LastLogonDate', 'ai1.GameID as SpreaderID', 'ai1.UserID as ai1UserID')
- ->where('Higher1ID', '>', 0)
- ->where($where)
- ->orderBy('ai.RegisterDate', 'desc')
- ->paginate(10);
- $start_time = Helper::timeChange($start_time);
- $end_time = Helper::timeChange($end_time);
- $dates = [1 => '今日', 2 => '昨日', 3 => '本周', 4 => '本月'];
- $data = compact('list', 'start_time', 'end_time', 'spreaderID', 'GameID', 'date', 'dates');
- return view('admin.user.daily_binding', $data);
- }
- public function moneyDeviation(Request $request)
- {
- $query = DB::table('QPRecordDB.dbo.RecordUserTotalStatistics as ru')
- ->leftJoin(
- 'QPAccountsDB.dbo.AccountsInfo as ai',
- 'ai.UserID',
- '=',
- 'ru.UserID'
- )
- ->lock('with(nolock)');
- if ($request->input('sort')) {
- $query->orderByRaw($request->input('sort'));
- }
- if ($request->input('GameID')) {
- $query->where('GameID', $request->input('GameID'));
- }
- if ($request->input('NickName')) {
- $query->where('NickName', $request->input('NickName'));
- }
- if ($request->input('Channel')) {
- $query->where('Channel', $request->input('Channel'));
- }
- if ($request->input('RegisterDateStart')) {
- $query->where('RegisterDate', '>=',
- \Carbon\Carbon::createFromTimestamp(strtotime($request->input('RegisterDateStart')))
- ->format('Y-m-d H:i:00'));
- }
- if ($request->input('RegisterDateEnd')) {
- $query->where('RegisterDate', '<=',
- \Carbon\Carbon::createFromTimestamp(strtotime($request->input('RegisterDateEnd')))
- ->format('Y-m-d H:i:59.999'));
- }
- if ($request->input('LastLogonDateStart')) {
- $query->where('LastLogonDate', '>=',
- \Carbon\Carbon::createFromTimestamp(strtotime($request->input('LastLogonDateStart')))
- ->format('Y-m-d H:i:00'));
- }
- if ($request->input('LastLogonDateEnd')) {
- $query->where('LastLogonDate', '<=',
- \Carbon\Carbon::createFromTimestamp(strtotime($request->input('LastLogonDateEnd')))
- ->format('Y-m-d H:i:59.999'));
- }
- $kinds = DB::table('QPPlatformDB.dbo.GameKindItem')
- ->pluck('KindName', 'KindID');
- if ($request->input('export')) {
- $data = [];
- $query->selectRaw("ai.*, Recharge-Withdraw/100 as deviation, Recharge,
- Withdraw/100 as Withdraw, Handsel, DrawBase")
- ->orderBy('ai.UserID')
- ->chunk(1000, function ($items) use (&$data) {
- $userIDs = $items->pluck('UserID');
- $res = AccountsInfo::query()->with('gameScoreInfo', 'accountPhoneRelation', 'gameScoreLocker')
- ->whereIn('UserID', $userIDs)
- ->get();
- $userInfos = [];
- foreach ($res as $k => $v) {
- $userInfos[$v->UserID] = $v;
- }
- $res1 = DB::table('QPRecordDB.dbo.RecordUserDataStatisticsNew')->whereIn('UserID', $userIDs)
- ->where('DateID', date('Ymd'))
- ->get();
- $statNew = [];
- foreach ($res1 as $k => $v) {
- $statNew[$v->UserID] = $v;
- }
- $insert = [];
- foreach ($items as $k => $v) {
- $insert['GameID'] = $userInfos[$v->UserID]->GameID;
- $insert['NickName'] = $userInfos[$v->UserID]->NickName;
- $insert['Channel'] = $userInfos[$v->UserID]->Channel;
- $insert['LastLogonDate'] = $userInfos[$v->UserID]->LastLogonDate;
- $insert['LastLogonDateCN'] =
- date('Y-m-d H:i:s', strtotime($userInfos[$v->UserID]->LastLogonDate . ' +11 hours'));
- $insert['PhoneNum'] = $userInfos[$v->UserID]->accountPhoneRelation->PhoneNum ?? '';
- $insert['Score'] = $userInfos[$v->UserID]->gameScoreInfo->Score ?? '';
- $insert['deviation'] = $v->deviation;
- $insert['Recharge'] = $v->Recharge . '/' . ($statNew[$v->UserID]->Recharge ?? 0);
- $insert['Withdraw'] = $v->Withdraw . '/' . ($statNew[$v->UserID]->Withdraw ?? 0)/100;
- $insert['Handsel'] = $v->Handsel . '/' . ($statNew[$v->UserID]->Handsel ?? 0);
- $insert['DrawBase'] = $v->DrawBase;
- $insert['IP'] = $userInfos[$v->UserID]->LastLogonIP;
- $insert['Online'] = $kinds[$userInfos[$v->UserID]->gameScoreLocker->KindID] ?? '离线';
- $insert['RegisterDate'] = $userInfos[$v->UserID]->RegisterDate;
- $insert['RegisterDateCN'] = date(
- 'Y-m-d H:i:s',
- strtotime($userInfos[$v->UserID]->RegisterDate . ' +11 hours')
- );
- $data[] = $insert;
- }
- });
- downloadExcel($data, [__('auto.会员ID'), __('auto.昵称'), __('auto.最后登录时间(当地)'), __('auto.最后登录时间(中国)'), __('auto.手机号'), __('auto.余额'),
- __('auto.茶叶减咖啡(累计)'), __('auto.今日/历史充值'), __('auto.今日/历史茶叶'), __('auto.今日/历史彩金'), __('auto.可茶叶金额'), __('auto.IP'),
- __('auto.在线状态'), __('auto.注册日期(当地)'), __('auto.注册日期(中国)'),
- ],__('auto.提充比查询').'.xls');
- }
- $page = $query->selectRaw("ai.*, Recharge-Withdraw/100 as deviation, Recharge,
- Withdraw/100 as Withdraw, Handsel, DrawBase")
- ->whereRaw('Recharge-Withdraw/100 < 0')
- ->paginate(10);
- $userIDs = array_column($page->items(), 'UserID');
- if ($userIDs) {
- $res = AccountsInfo::query()->with('gameScoreInfo', 'accountPhoneRelation', 'gameScoreLocker')
- ->whereIn('UserID', $userIDs)
- ->get();
- $userInfos = [];
- foreach ($res as $k => $v) {
- $userInfos[$v->UserID] = $v;
- }
- $res1 = DB::table('QPRecordDB.dbo.RecordUserDataStatisticsNew')->whereIn('UserID', $userIDs)
- ->where('DateID', date('Ymd'))
- ->get();
- $statNew = [];
- foreach ($res1 as $k => $v) {
- $statNew[$v->UserID] = $v;
- }
- foreach ($page as $k => $v) {
- if(!(isset($userInfos[$v->UserID]) && @$userInfos[$v->UserID])){
- continue;
- }
- $page[$k]->UserID = $v->UserID;
- $page[$k]->GameID = $userInfos[$v->UserID]->GameID;
- $page[$k]->NickName = $userInfos[$v->UserID]->NickName;
- $page[$k]->LastLogonDate = $userInfos[$v->UserID]->LastLogonDate;
- $page[$k]->LastLogonDateCN =
- date('Y-m-d H:i:s', strtotime($userInfos[$v->UserID]->LastLogonDate . ' +11 hours'));
- $page[$k]->PhoneNum = $userInfos[$v->UserID]->accountPhoneRelation->PhoneNum ?? '';
- $page[$k]->Score = $userInfos[$v->UserID]->gameScoreInfo->Score ?? '';
- $page[$k]->deviation = $v->deviation;
- $page[$k]->Recharge = $v->Recharge;
- $page[$k]->RechargeToday = $statNew[$v->UserID]->Recharge ?? 0;
- $page[$k]->Withdraw = $v->Withdraw;
- $page[$k]->WithdrawToday = ($statNew[$v->UserID]->Withdraw ?? 0)/100;
- $page[$k]->Handsel = $v->Handsel;
- $page[$k]->HandselToday = $statNew[$v->UserID]->Handsel ?? 0;
- $page[$k]->DrawBase = $v->DrawBase;
- $page[$k]->IP = $userInfos[$v->UserID]->LastLogonIP;
- $page[$k]->Online = $kinds[$userInfos[$v->UserID]->gameScoreLocker->KindID] ?? '离线';
- $page[$k]->RegisterDate = $userInfos[$v->UserID]->RegisterDate;
- $page[$k]->RegisterDateCN = date(
- 'Y-m-d H:i:s',
- strtotime($userInfos[$v->UserID]->RegisterDate . ' +11 hours')
- );
- }
- }
- $channels = [0 => '全部'] + DB::connection('read')->table('QPPlatformDB.dbo.ChannelPackageName')
- ->selectRaw('Channel')->groupBy('Channel')->pluck('Channel', 'Channel')
- ->toArray();
- $total = $query->count();
- $recharge = $query->sum('Recharge');
- $withdraw = $query->sum(DB::raw('Withdraw/100'));
- return view('admin.user.money_deviation', [
- 'list' => $page,
- 'request' => $request,
- 'channels' => $channels,
- 'total' => $total,
- 'money' => "$withdraw/$recharge",
- ]);
- }
- }
|