blind_box_error(); // $this->xlh_gift_send(); // echo "\n"; // $this->task_history_send(); } //统计盲盒转盘错误数据 public function blind_box_error() { die("暂停"); // 设置数据库查询超时时间 Db::query("SET SESSION wait_timeout=600"); Db::query("SET SESSION interactive_timeout=600"); // 使用连表查询,直接找出送给多人的数据 echo "开始查询送给多人的数据...\n"; // 先查询所有有多个不同 gift_user_id 的 tid $multipleGiftRecords = Db::name('vs_blind_box_turntable_results_log') ->group('tid') ->having('COUNT(DISTINCT gift_user_id) > 1') ->field('tid, COUNT(DISTINCT gift_user_id) as user_count,gift_user_id') ->select(); echo "找到 " . count($multipleGiftRecords) . " 条送给多人的记录\n"; // 输出详细信息 foreach ($multipleGiftRecords as $record) { echo "转盘ID: {$record['tid']}, 接收人数: {$record['user_count']}\n"; // 获取该转盘的详细信息 $turntableInfo = Db::name('vs_blind_box_turntable_log') ->where('id', $record['tid']) ->find(); if ($turntableInfo) { echo " 开奖用户ID: {$turntableInfo['user_id']}, 礼包ID: {$turntableInfo['gift_bag_id']}\n"; } } echo "统计盲盒转盘错误数据完成\n"; } //统计盲盒转盘错误数据 public function blind_box_error1() { die("暂停"); // 设置数据库查询超时时间 Db::query("SET SESSION wait_timeout=600"); Db::query("SET SESSION interactive_timeout=600"); // 分批处理数据,避免一次性加载大量数据到内存 $batchSize = 1000; $offset = 0; $data_multiple = []; $totalProcessed = 0; do { // 分批获取数据 $turntable_log = Db::name('vs_blind_box_turntable_log') ->limit($offset, $batchSize) ->select(); // 如果没有更多数据,退出循环 if (empty($turntable_log)) { break; } foreach ($turntable_log as $key => $value) { //查询本轮是否有多个接收礼物的人 $turntable_results_log = Db::name('vs_blind_box_turntable_results_log') ->where('tid', $value['id']) ->group('gift_user_id') ->select(); // 统计送给多人的数据 if (count($turntable_results_log) > 1) { $data_multiple[] = [ 'turntable_id' => $value['id'], 'recipient_count' => count($turntable_results_log), 'data' => $value ]; } $totalProcessed++; // 每处理100条记录输出一次进度 if ($totalProcessed % 100 == 0) { echo "已处理 {$totalProcessed} 条记录...\n"; // 每100条记录后清理内存 gc_collect_cycles(); } } // 更新偏移量 $offset += $batchSize; // 释放内存 unset($turntable_log); unset($turntable_results_log); } while ($totalProcessed <= 1400); echo "送给多人的数据共 " . count($data_multiple) . " 条记录\n"; echo "统计盲盒转盘错误数据完成-共处理 " . $totalProcessed . " 条数据\n"; // 输出详细信息 foreach ($data_multiple as $item) { echo "转盘ID: {$item['turntable_id']}, 接收人数: {$item['recipient_count']}\n"; } } public function RoomOwners() { $room = Db::name('vs_room')->where(['room_status' => 1,'apply_status' => 2])->select(); $arr = []; foreach ($room as $key => $value) { $liushui = Db::name('vs_give_gift')->where(['from_id' => $value['id'],'from' => 2])->sum('total_price'); $usercode = Db::name('user')->where(['id' => $value['user_id']])->value('user_code'); $nickname = Db::name('user')->where(['id' => $value['user_id']])->value('nickname'); $arr[] = [ 'room_id' => $value['id'], 'user_id' => $value['user_id'], 'user_code' => $usercode, 'nickname' => $nickname, 'liushui' => $liushui ]; } //房主的收益 foreach ($arr as $key => $v){ $shouyi = db::name('vs_user_money_log')->where(['user_id' => $v['user_id'],'change_type' => 18,'money_type' =>2,'createtime'=>['<',1759585380]])->sum('change_value'); $arr[$key]['shouyi'] = $shouyi; $arr[$key]['duibi'] = $shouyi.'-'.$v['liushui']/10/10; $arr[$key]['chazhi'] = $v['liushui']/10/10 - $shouyi; } var_dump($arr); } /* * 巡乐会中奖后房主礼物补发放 */ public function xlh_gift_send(){ die("暂停"); echo "开始补发巡乐会中奖后房主礼物 \n"; $xlh_list = db::name('vs_room_pan_xlh')->where(['id'=>['in',[279]]])->select(); echo "共有".count($xlh_list)."个需要发放的礼物 \n"; if(empty($xlh_list)){ echo "没有需要发放的礼物 \n"; } foreach ($xlh_list as $key=>$value){ try{ //发放 //房主礼物落包 $res = []; //获取房主id $user_id = db::name('vs_room')->where(['id'=>$value['room_id']])->value('user_id'); $res = model('api/UserGiftPack')->change_user_gift_pack($user_id,$value['homeowner_gift_id'],1,model('api/UserGiftPack')::XLH_DRAW_GIFT_GET,"巡乐会中奖后房主礼物发放-补发"); if ($res['code'] != 1) { echo $res['msg']."\n"; continue; } echo "巡乐会中奖后房主礼物发放成功 房主Id:".$user_id."\n"; }catch (\Exception $e){ echo $e->getMessage()."\n"; } } } /* * 任务历史数据补发 */ public function task_history_send(){ echo "开始补发任务历史数据 \n"; $user_list = db::name('user')->where(['status'=>1,'delete_time'=>0])->select(); //任务 $task_list = db::name('vs_tasks')->where(['task_type'=>1,'delete_time'=>0])->select(); foreach ($user_list as $key=>$value){ echo "开始补发用户({$value['id']}):".$value['nickname']."的任务数据 \n"; foreach ($task_list as $k=>$v){ if($v['id']==3){//实名认证任务 //判断用户是否实名认证 $is_real = model('api/UserData')->real_name_info($value['id']); if($is_real['code']==1&&$is_real['data']['is_real'] ==1){ $re =model('api/Tasks')->tasks_complete($value['id'],3); if($re['code']!=1){ echo "用户({$value['id']}):".$value['nickname']."任务({$v['id']}):".$v['task_name']."任务完成失败 失败原因:".$re['msg']."\n"; } } echo "用户({$value['id']}):".$value['nickname']."实名认证任务完成 \n"; }elseif($v['id']==4){//完善个人资料-创建相册 $album_list = db::name('user_album')->where(['user_id' => $value['id']])->field('id,name,image,pwd,read_num,like_num')->select(); if(!empty($album_list)){ $re = model('api/Tasks')->tasks_complete($value['id'],4); if($re['code']!=1){ echo "用户({$value['id']}):".$value['nickname']."任务({$v['id']}):".$v['task_name']."任务完成失败 失败原因:".$re['msg']."\n"; } } echo "用户({$value['id']}):".$value['nickname']."完善个人资料-创建相册任务完成 \n"; }elseif($v['id']==5){//完善个人资料- 绑定支付宝或银行卡信息 $user_data = db::name('user_data')->where('user_id',$value['id'])->find(); if(!empty($user_data['alipay_account'])||!empty($user_data['bank_card_number'])){ $re = model('api/Tasks')->tasks_complete($value['id'],5); if($re['code']!=1){ echo "用户({$value['id']}):".$value['nickname']."任务({$v['id']}):".$v['task_name']."任务完成失败 失败原因:".$re['msg']."\n"; } } echo "用户({$value['id']}):".$value['nickname']."完善个人资料- 绑定支付宝或银行卡信息任务完成 \n"; }elseif($v['id']==6){//第一次签约师傅 $is_sign = db::name('vs_user_sign')->where(['sign_user_id' => $value['id']])->find(); if(!empty($is_sign)){ $re = model('api/Tasks')->tasks_complete($value['id'],6); if($re['code']!=1){ echo "用户({$value['id']}):".$value['nickname']."任务({$v['id']}):".$v['task_name']."任务完成失败 失败原因:".$re['msg']."\n"; } } echo "用户({$value['id']}):".$value['nickname']."第一次签约师傅任务完成 \n"; } elseif($v['id']==7){//第一次送礼 $give_gift = db::name('vs_give_gift')->where(['user_id' => $value['id']])->find(); if(!empty($give_gift)){ $re = model('api/Tasks')->tasks_complete($value['id'],7); if($re['code']!=1){ echo "用户({$value['id']}):".$value['nickname']."任务({$v['id']}):".$v['task_name']."任务完成失败 失败原因:".$re['msg']."\n"; } } echo "用户({$value['id']}):".$value['nickname']."第一次送礼任务完成 \n"; }elseif($v['id']==8){//第一次收礼 $give_gift = db::name('vs_give_gift')->where(['gift_user' => $value['id']])->find(); if(!empty($give_gift)){ $re = model('api/Tasks')->tasks_complete($value['id'],8); if($re['code']!=1){ echo "用户({$value['id']}):".$value['nickname']."任务({$v['id']}):".$v['task_name']."任务完成失败 失败原因:".$re['msg']."\n"; } } echo "用户({$value['id']}):".$value['nickname']."第一次收礼任务完成 \n"; }elseif($v['id']==9){//第一次拍卖关系 $auction = db::name('vs_room_auction')->where(['user_id' => $value['id'],'bidder_user_id'=>['>',0]])->find(); if(!empty($auction)){ $re = model('api/Tasks')->tasks_complete($value['id'],9); if($re['code']!=1){ echo "用户({$value['id']}):".$value['nickname']."任务({$v['id']}):".$v['task_name']."任务完成失败 失败原因:".$re['msg']."\n"; } } echo "用户({$value['id']}):".$value['nickname']."第一次拍卖关系任务完成 \n"; }elseif($v['id']==10){//第一次星球房卡关系(互娱房) $friending1 = db::name('vs_user_friending_heart')->where(['user1_id' => $value['id'],'status'=>3])->find(); if(empty($friending1)){ $friending1 = db::name('vs_user_friending_heart')->where(['user2_id' => $value['id'],'status'=>3])->find(); } if(!empty($friending1)){ $re = model('api/Tasks')->tasks_complete($value['id'],10); if($re['code']!=1){ echo "用户({$value['id']}):".$value['nickname']."任务({$v['id']}):".$v['task_name']."任务完成失败 失败原因:".$re['msg']."\n"; } } echo "用户({$value['id']}):".$value['nickname']."第一次星球房卡关系任务完成 \n"; }elseif($v['id']==11){//第一次 加入公会 $guild_list = db::name('vs_guild_user')->where(['user_id' => $value['id']])->find(); if(!empty($guild_list)){ $re = model('api/Tasks')->tasks_complete($value['id'],11); if($re['code']!=1){ echo "用户({$value['id']}):".$value['nickname']."任务({$v['id']}):".$v['task_name']."任务完成失败 失败原因:".$re['msg']."\n"; } } echo "用户({$value['id']}):".$value['nickname']."第一次加入公会任务完成 \n"; } } echo "用户({$value['id']}):".$value['nickname']."的任务数据补发完成 \n"; echo '------------------------------------------------------'."\n"; } echo "任务历史数据补发完成 用户总数:".count($user_list). " \n"; } //推算7号平台结余 public function calc_7_balance(){ set_time_limit(0); $jisuan = 0; // 分页处理,防止超时 $pageSize = 100; $page = 1; $hasMore = true; while ($hasMore) { // 分页查询用户钱包数据 $offset = ($page - 1) * $pageSize; $user_list = db::name('user_wallet') ->limit($offset, $pageSize) ->select(); // 判断是否还有更多数据 if (count($user_list) < $pageSize) { $hasMore = false; } // 如果没有数据则退出循环 if (empty($user_list)) { break; } foreach ($user_list as $key => $value) { $earnings = $value['earnings']; //根据注释,应该计算2025-12-07之前的收益所得 $income = db::name('vs_user_money_log') ->where(['user_id'=>$value['user_id']]) ->whereIn('change_type',[6,9,11,12,18,19,21,22,31,28,34,52,53,54,55,57]) ->where('createtime','>=', strtotime('2025-12-07')) ->where('createtime','<=', time()) ->sum('change_value'); //根据注释,应该计算2025-12-07之前的消费 $expense = db::name('vs_user_money_log') ->where(['user_id'=>$value['user_id']]) ->whereIn('change_type',[3,14,29]) ->where('createtime','>=', strtotime('2025-12-07')) ->where('createtime','<=', time()) ->sum('change_value'); $jisuan += ($earnings - $income + $expense); echo "用户({$value['user_id']}):"."的结余:".($earnings - $income + $expense)."\n"; } echo "第".$page."页数据处理完成 \n"; // 释放内存 unset($user_list); $page++; // 每处理10页输出一次进度 if ($page % 10 == 0) { echo "已处理 {$page} 页数据...\n"; } } echo "2025-12-07以前平台结余:".$jisuan."\n"; } public function calc_7_balances(){ //当前平台结余 for($i=1;$i<=15;$i++){ $time = strtotime('2025-12-'.$i); $all_earnings = db::name('user_wallet')->sum('earnings'); $all_income = db::name('vs_user_money_log') ->whereIn('change_type',[6,9,11,12,18,19,21,22,31,28,34,52,53,54,55,57]) ->where('money_type',2) ->where('createtime','>=', $time) ->where('createtime','<=', time()) ->sum('change_value'); $all_expense = db::name('vs_user_money_log') ->whereIn('change_type',[14,29]) ->where('money_type',2) ->where('createtime','>=',$time) ->where('createtime','<=', time()) ->sum('change_value'); //提现 $all_tixian = db::name('vs_user_money_log') ->whereIn('change_type',[3]) ->where('money_type',2) ->where('createtime','>=',$time) ->where('createtime','<=', time()) ->sum('change_value'); //充值 // $all_recharge = db::name('vs_user_money_log') // ->where('change_type',2) // ->where('createtime','>=', $time) // ->where('createtime','<=', time()) // ->sum('change_value'); //充值 $all_recharge1 = db::name('vs_user_recharge') ->where('pay_status',2) ->where('createtime','>=', $time) ->where('createtime','<=', time()) ->sum('money'); $jisuan = ($all_earnings + $all_expense + $all_tixian) - $all_income; echo date('Y-m-d',time())." 当前平台总结余:".$all_earnings."\n"; echo date('Y-m-d',$time)." 以后平台总收入(用户总收益):".$all_income."\n"; echo date('Y-m-d',$time)." 以后平台总支出(用户总消耗钻石红包,兑换金币):".$all_expense."\n"; echo date('Y-m-d',$time)." 以后的提现记录:".$all_tixian."\n"; echo date('Y-m-d',$time)." 以后充值(完成):".$all_recharge1 ."\n"; echo date('Y-m-d',$time)." 以前平台总结余:".$jisuan."\n"; echo "========================================================"."\n"; } } //1 public function calc_1_7_balances(){ //当前平台结余 $stime = strtotime('2025-12-01'); $etime = strtotime('2025-12-08'); $all_expense = db::name('vs_user_money_log') ->whereIn('change_type',[3,14,29]) ->where('money_type',2) ->where('createtime','>=',$stime) ->where('createtime','<=', $etime) ->sum('change_value'); echo "2025-12-01至2025-12-07平台总提现:".$all_expense."\n"; } /* * 首次创建房间任务历史数据补发 */ public function task_history_send_34(){ die(); echo "开始补发任务历史数据 \n"; $room_list = db::name('vs_room')->where(['type_id' => ['<>',6], 'apply_status' => 2])->select(); foreach ($room_list as $key=>$value){ echo "开始补发房间({$value['room_name']}): 的任务数据 \n"; $re =model('api/Tasks')->tasks_complete($value['user_id'],34); if($re['code']!=1){ echo $value['room_name']."首次建立房间任务完成失败 失败原因:".$re['msg']."\n"; continue; } } $reslut = Db::name('vs_tasks_user_daily')->where('task_id',34)->update([ 'is_claimed' => 1, ]); echo "任务历史数据补发完成 用户总数:".count($room_list). " \n"; } public function clear_room_offline_user() { echo "开始清除房间离线用户 \n"; $room = db::name('vs_room_visitor')->where(['is_online' => 2])->select(); $res_i = 0; if($room){ foreach ($room as $value) { $time = time() - $value['updatetime']; if($time > 86400){ $re = model('api/Room')->quit_room($value['user_id'], $value['room_id'],$value['user_id']); if($re['code'] != 1){ echo "清除房间离线用户失败:".$value['user_id']."---".$re['msg']."\n"; }else{ echo "清除房间离线用户成功:".$value['user_id']."\n"; $res_i ++; } } } } echo "清除房间离线用户完成 (".$res_i.") \n"; } }