blind_box_error(); // $this->xlh_gift_send(); // echo "\n"; // // $this->clean_guild_flow(); // $this->giftSend(); // $this->createGuildSubsidyDataNewNew(); // $this->task_coin_count(); } //统计盲盒转盘错误数据 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 <= 18; $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"; } //清洗任务数据 public function clean_task_data() { echo "开始清洗任务数据 \n"; $task_student = Db::name('vs_tasks_student')->where(['status' => 2, 'delete_time' => 0])->select(); foreach ($task_student as $value) { $tasks_bag_id = db::name('vs_tasks')->where(['id' => $value['task_id']])->value('tasks_bag_id'); $insert_data = [ 'user_id' => $value['user_id'], 'task_id' => $value['task_id'], 'tasks_bag_id' => $tasks_bag_id, 'is_completed' => 1, 'is_claimed' => 1, 'createtime' => time(), 'updatetime' => time(), 'completion_time' => $value['createtime'], 'collection_time' => $value['updatetime'], ]; Db::name('vs_tasks_user_daily')->insert($insert_data); echo "清洗师徒任务数据成功:" . $value['id'] . "\n"; } $user_couple_task = Db::name('vs_user_cp_task')->where(['status' => 2, 'delete_time' => 0])->select(); foreach ($user_couple_task as $value) { $tasks_bag_id = db::name('vs_tasks')->where(['id' => $value['tasks_bag_id']])->value('tasks_bag_id'); Db::name('vs_tasks_user_daily')->insert([ 'user_id' => $value['user_id'], 'task_id' => $value['tasks_bag_id'], 'tasks_bag_id' => $tasks_bag_id, 'is_completed' => 1, 'is_claimed' => 1, 'createtime' => time(), 'updatetime' => time(), 'completion_time' => $value['createtime'], 'collection_time' => $value['createtime'], ]); echo "清洗CP任务数据成功:" . $value['id'] . "\n"; } echo "清洗任务数据完成 \n"; } //清洗公会流水 public function clean_guild_flow() { echo "开始清洗公会流水: \n"; $guild = db::name('vs_guild')->select(); foreach ($guild as $value) { echo "================================\n"; echo "开始清洗公会({$value['id']})流水 \n"; $guild_user = db::name('vs_guild_user')->where(['guild_id' => $value['id'],'status' => 1,'apply_time'=>['>',0],'room_id' => ['>',0]])->select(); $transaction = 0; foreach ($guild_user as $v) { $week_start_time_seach = "1761554521"; $week_end_time_seach = "1766667632"; if($v['apply_time'] && $week_start_time_seach < $v['apply_time']){ $week_start_time_seach = $v['apply_time']; } if($v['quit_time'] && ($week_end_time_seach > $v['quit_time'])){ $week_end_time_seach = $v['quit_time']; } $transaction_one = db::name('vs_give_gift') ->where('from_id',$v['room_id']) ->where(['createtime'=>['>=',$week_start_time_seach]]) ->where(['createtime'=>['<',$week_end_time_seach]]) ->where(['from'=>2]) ->sum('total_price'); // Db::name('vs_guild_user')->where(['id' => $v['id']])->setInc('coin', $transaction_one); if($transaction_one>0){ $data = [ 'guild_id' => $value['id'], 'room_id' => $v['room_id'], 'give_gift_id' => 0, 'flow_price' => $transaction_one, 'day' => "", 'createtime' => time(), ]; // $res = Db::name('vs_guild_flow')->insert($data); } $transaction += $transaction_one; echo " 公会房间(". $v['room_id'] .")流水:" . $transaction_one . "\n"; } // Db::name('vs_guild')->where(['id' => $value['id']])->setInc('income', $transaction); echo "清洗公会房间流水完成:" . count($guild_user) . "\n"; } echo "清洗公会流水完成: ".count($guild)."\n"; } //清洗公会流水 public function clean_guild_flow1() {die; echo "开始清洗公会流水: \n"; $guild = db::name('vs_guild')->where(['status' => 1])->select(); foreach ($guild as $value) { echo "================================\n"; //echo "开始清洗公会({$value['id']})流水 \n"; $guild_user = db::name('vs_guild_user')->where(['guild_id' => $value['id'],'status' => 1,'apply_time'=>['>',0],'room_id' => ['>',0]])->select(); $transaction = 0; $transaction_one_all = 0; foreach ($guild_user as $v) { $guild_flow_price = Db::name('vs_guild_flow')->where(['guild_id' => $value['id'],'room_id' => $v['room_id']])->sum('flow_price'); $transaction += $guild_flow_price; $week_start_time_seach = "1761554521"; $week_end_time_seach = "1766564906"; if($v['apply_time'] && $week_start_time_seach < $v['apply_time']){ $week_start_time_seach = $v['apply_time']; } if($v['quit_time'] && ($week_end_time_seach > $v['quit_time'])){ $week_end_time_seach = $v['quit_time']; } $transaction_one = db::name('vs_give_gift') ->where('from_id',$v['room_id']) ->where(['from'=>2,'createtime' => ['between', [$week_start_time_seach, $week_end_time_seach]]]) ->sum('total_price'); if($guild_flow_price != $transaction_one){ echo "公会房间(". $v['room_id'] .")流水与公会用户流水不一致:" . $guild_flow_price . "--" . $transaction_one . "\n"; $flow_price_cha = $v['coin']-$guild_flow_price; echo "差:".($flow_price_cha) . "\n"; // Db::name('vs_guild_user')->where(['id' => $v['id']])->setDec('coin', $flow_price_cha); } $transaction_one_all= $transaction_one_all+$transaction_one; } if($transaction != $transaction_one_all){ echo "公会流水与公会用户流水不一致:" . $transaction . "--" . $value['income'] . "\n"; $transaction_cha = $value['income']-$transaction; echo $value['id']."差:".($transaction_cha) . "\n"; // Db::name('vs_guild')->where(['id' => $value['id']])->setDec('income', $transaction_cha); } // echo "清洗公会房间流水完成:" . count($guild_user) . "\n"; } // echo "清洗公会流水完成: ".count($guild)."\n"; } /* * 生成工会补贴数据 * 配置:定时脚本每周一 执行 * 配置:/cron/Subsidy/createGuildSubsidyData */ public function createGuildSubsidyData(){ //获取上周第一天时间 $week_start_time = strtotime('last week Monday'); $week_end_time = strtotime(date('Y-m-d 23:59:59',strtotime('last week Sunday'))); $week_start_time = strtotime('2025-12-08'); $week_end_time = strtotime('2025-12-15'); // $week_start_time = strtotime('2025-12-15'); // $week_end_time = strtotime('2025-12-22'); //获取上周时间 $time_value = date('o-W', $week_start_time); echo $time_value . "工会周补贴数据生成开始\n"; //查询所有工会 $guild_list = db::name('vs_guild')->where(['delete_time'=>0])->field('id')->select(); $data_count = 0; foreach ($guild_list as $key => $value) { //获取所有工会房间ID $guild_user_data = db::name('vs_guild_user')->where('guild_id', $value['id'])->where(['apply_time'=>['>',0],'status'=>1,'room_id'=>['>',0]])->field('room_id,apply_time,quit_time')->select(); $transaction = 0; foreach ($guild_user_data as $k => $v) { $week_start_time_seach = $week_start_time; $week_end_time_seach = $week_end_time; if($v['apply_time'] && $week_end_time_seach < $v['apply_time']){ continue; } if($v['quit_time'] && $v['quit_time'] < $week_start_time_seach){ continue; } if($v['apply_time'] && $week_start_time_seach < $v['apply_time']){ $week_start_time_seach = $v['apply_time']; } if($v['quit_time'] && ($week_end_time_seach > $v['quit_time'])){ $week_end_time_seach = $v['quit_time']; } $transaction_one = db::name('vs_give_gift') ->whereIn('from_id',$v['room_id']) ->where(['from'=>['in',[2,3,6]],'createtime' => ['between', [$week_start_time_seach, $week_end_time_seach]]]) ->sum('total_price'); $transaction += $transaction_one; } if($transaction > 0){ //判断是否已经生成过 if (db::name('vs_guild_subsidy')->where(['guild_id'=>$value['id'],'week'=>$time_value])->find()) { continue; } //获取补贴配置 $config = db::name('vs_guild_subsidy_config')->where(['status' => 1])->order('end_amount desc')->select(); //配置查询 if (!$config) { echo '补贴配置为空\n'; die; } $subsidy_ratio = 0; $subsidy_amount = 0; foreach ($config as $k => $v) { if ($transaction >= $v['end_amount']) { $subsidy_ratio = $v['subsidy_ratio']; $subsidy_amount = ($transaction * ($subsidy_ratio / 100)) / get_system_config_value('rmb_coin_ratio');//转为钻石 break; // 找到匹配项后提前退出循环 } } //生成补贴数据 $data = [ 'guild_id' => $value['id'], 'week' => $time_value, 'start_time' => date('Y-m-d H:i:s', $week_start_time), 'end_time' =>date('Y-m-d H:i:s', $week_end_time), 'total_transaction' => $transaction, 'subsidy_amount' => $subsidy_amount, 'subsidy_ratio' => $subsidy_ratio, 'status' => 0, 'createtime' => time(), ]; echo "工会".$value['id']."生成数据:流水金额:{$transaction} 补贴比例:{$subsidy_ratio}% 补贴金额:{$subsidy_amount}\n"; // $subsidy_id = Db::name('vs_guild_subsidy_1')->insertGetId($data);。。。。11 // if ($subsidy_id) { // echo "工会".$value['id']."生成成功(补贴ID:".$subsidy_id." 补贴金额:".$subsidy_amount.")\n"; // $data_count++; // } } } echo $time_value . "工会周补贴数据生成完成-共" . $data_count . "条数据\n"; } /* * 生成工会补贴数据 * 配置:定时脚本每周一 执行 * 配置:/cron/Subsidy/createGuildSubsidyData */ public function createGuildSubsidyDataNew(){ //获取上周第一天时间 $week_start_time = strtotime('last week Monday'); $week_end_time = strtotime(date('Y-m-d 23:59:59',strtotime('last week Sunday'))); // $week_start_time = strtotime('2025-12-08'); // $week_end_time = strtotime('2025-12-15'); // $week_start_time = strtotime('2025-12-15'); // $week_end_time = strtotime('2025-12-22'); //获取上周时间 $time_value = date('o-W', $week_start_time); echo $time_value . "工会周补贴数据生成开始\n"; //查询所有工会 $guild_list = db::name('vs_guild')->where(['delete_time'=>0])->field('id')->select(); $data_count = 0; foreach ($guild_list as $key => $value) { //获取所有工会房间ID $guild_user_data = db::name('vs_guild_user')->where('guild_id', $value['id'])->where(['apply_time'=>['>',0],'status'=>1,'room_id'=>['>',0]])->field('room_id,apply_time,quit_time')->select(); $transaction = 0; foreach ($guild_user_data as $k => $v) { $week_start_time_seach = $week_start_time; $week_end_time_seach = $week_end_time; if($v['apply_time'] && $week_end_time_seach < $v['apply_time']){ continue; } if($v['quit_time'] && $v['quit_time'] < $week_start_time_seach){ continue; } if($v['apply_time'] && $week_start_time_seach < $v['apply_time']){ $week_start_time_seach = $v['apply_time']; } if($v['quit_time'] && ($week_end_time_seach > $v['quit_time'])){ $week_end_time_seach = $v['quit_time']; } $transaction_one = db::name('vs_give_gift') ->whereIn('from_id',$v['room_id']) ->where(['from'=>['in',[2,3,6]],'createtime' => ['between', [$week_start_time_seach, $week_end_time_seach]]]) ->sum('total_price'); $transaction += $transaction_one; } if($transaction > 0){ //判断是否已经生成过 if (db::name('vs_guild_subsidy')->where(['guild_id'=>$value['id'],'week'=>$time_value])->find()) { continue; } //获取补贴配置 $config = db::name('vs_guild_subsidy_config')->where(['status' => 1])->order('end_amount desc')->select(); //配置查询 if (!$config) { echo '补贴配置为空\n'; die; } $subsidy_ratio = 0; $subsidy_amount = 0; foreach ($config as $k => $v) { if ($transaction >= $v['end_amount']) { $subsidy_ratio = $v['subsidy_ratio']; $subsidy_amount = ($transaction * ($subsidy_ratio / 100)) / get_system_config_value('rmb_coin_ratio');//转为钻石 break; // 找到匹配项后提前退出循环 } } //生成补贴数据 $data = [ 'guild_id' => $value['id'], 'week' => $time_value, 'start_time' => date('Y-m-d H:i:s', $week_start_time), 'end_time' =>date('Y-m-d H:i:s', $week_end_time), 'total_transaction' => $transaction, 'subsidy_amount' => $subsidy_amount, 'subsidy_ratio' => $subsidy_ratio, 'status' => 0, 'createtime' => time(), ]; echo "工会".$value['id']."生成数据:流水金额:{$transaction} 补贴比例:{$subsidy_ratio}% 补贴金额:{$subsidy_amount}\n"; // $subsidy_id = Db::name('vs_guild_subsidy_1')->insertGetId($data);。。。。11 // if ($subsidy_id) { // echo "工会".$value['id']."生成成功(补贴ID:".$subsidy_id." 补贴金额:".$subsidy_amount.")\n"; // $data_count++; // } } } echo $time_value . "工会周补贴数据生成完成-共" . $data_count . "条数据\n"; } /* * 生成工会补贴数据 * 配置:定时脚本每周一 执行 * 配置:/cron/Subsidy/createGuildSubsidyData */ public function createGuildSubsidyDataNewNew(){ //获取上周第一天时间 $week_start_time = strtotime('last week Monday'); $week_end_time = strtotime(date('Y-m-d 23:59:59',strtotime('last week Sunday'))); // $week_start_time = strtotime('2025-12-08'); // $week_end_time = strtotime('2025-12-15'); $week_start_time = strtotime('2025-12-22'); $week_end_time = strtotime('2025-12-31'); //获取上周时间 $time_value = date('o-W', $week_start_time); echo $time_value . "工会周补贴数据生成开始\n"; //查询所有工会 $guild_list = db::name('vs_guild')->where(['delete_time'=>0])->field('id')->select(); $data_count = 0; foreach ($guild_list as $key => $value) { $transaction = Db::name('vs_guild_flow') ->where(['guild_id' => $value['id']]) ->where(['createtime' => ['between', [$week_start_time, $week_end_time]]]) ->sum('flow_price'); if($transaction > 0){ //判断是否已经生成过 // if (db::name('vs_guild_subsidy')->where(['guild_id'=>$value['id'],'week'=>$time_value])->find()) { // continue; // } //获取补贴配置 $config = db::name('vs_guild_subsidy_config')->where(['status' => 1])->order('end_amount desc')->select(); //配置查询 if (!$config) { echo '补贴配置为空\n'; die; } $subsidy_ratio = 0; $subsidy_amount = 0; foreach ($config as $k => $v) { if ($transaction >= $v['end_amount']) { $subsidy_ratio = $v['subsidy_ratio']; $subsidy_amount = ($transaction * ($subsidy_ratio / 100)) / get_system_config_value('rmb_coin_ratio');//转为钻石 break; // 找到匹配项后提前退出循环 } } //生成补贴数据 $data = [ 'guild_id' => $value['id'], 'week' => $time_value, 'start_time' => date('Y-m-d H:i:s', $week_start_time), 'end_time' =>date('Y-m-d H:i:s', $week_end_time), 'total_transaction' => $transaction, 'subsidy_amount' => $subsidy_amount, 'subsidy_ratio' => $subsidy_ratio, 'status' => 0, 'createtime' => time(), ]; echo "工会".$value['id']."生成数据:流水金额:{$transaction} 补贴比例:{$subsidy_ratio}% 补贴金额:{$subsidy_amount}\n"; // $subsidy_id = Db::name('vs_guild_subsidy_1')->insertGetId($data);。。。。11 // if ($subsidy_id) { // echo "工会".$value['id']."生成成功(补贴ID:".$subsidy_id." 补贴金额:".$subsidy_amount.")\n"; // $data_count++; // } } } echo $time_value . "工会周补贴数据生成完成-共" . $data_count . "条数据\n"; } //礼物发放 public function giftSend(){ die; // 用户补偿:12963 3个白马王子 (礼物ID:399) // 10012 5个白马王子(礼物ID:399) // $user_id = 24224; //拿大锤 // $gift_id = 399; //白马王子 // $num = 3; echo $user_id."开始执行\n";die; $res = model('api/UserGiftPack')->change_user_gift_pack($user_id,$gift_id,$num,model('api/UserGiftPack')::SYSTEM_ADJUSTMENT,"补偿:巡乐会卡顿赠送"); print_r($res); // $user_id = 21222; //娃哈哈 // $gift_id = 399; //白马王子 // $num = 5; echo $user_id."开始执行\n";die; $res = model('api/UserGiftPack')->change_user_gift_pack($user_id,$gift_id,$num,model('api/UserGiftPack')::SYSTEM_ADJUSTMENT,"补偿:巡乐会卡顿赠送"); print_r($res);die; } //禁言 public function mute_member(){ $guild_id = 77; $guild_user_ids = db::name('vs_guild_user') ->where(['delete_time'=>0]) ->where(['status'=>1]) ->where(['guild_id'=>$guild_id]) ->field('user_id')->select(); $user_ids =[]; foreach ($guild_user_ids as $key => $value) { $user_ids[] = 'u'.$value['user_id']; } model('api/Tencent')->mute_member('g'.$guild_id, $user_ids, 86400*7); } public function cesjs(){ $user_nobility_info = db::name('vs_user_nobility') ->field('id,user_id,lid,end_time') ->where('delete_time', 0) ->where(['end_time'=>['>',time()]]) ->select(); foreach ($user_nobility_info as $key => $value) { $nobility_info = db::name('vs_nobility') ->field('lid,name,image,pay_price,renew_price,day,power_ids') ->where('delete_time', 0) ->where('lid', $value['lid']) ->find(); if($value['end_time'] > time() + $nobility_info['day']*86400){ echo $value['user_id']. "续费时间:".date('Y-m-d H:i:s',$value['end_time'])."\n"; } } die(); // echo (1772977260-time()) / (3600*24) ;die; //金币: // $surplus_time = 1769664342 - 1767187765; // if($surplus_time > 0){ // //小时 // $surplus_time_hour = floor($surplus_time / 3600); //向下取整 // $pay_coin = 49999.00 - bcmul($surplus_time_hour * ((10990.00 / 30) / 24),1,2); //一小时的价格算 //echo floor($pay_coin);die; $old_nobility_info = db::name('vs_nobility') ->field('lid,name,pay_price,pay_coin') ->where('delete_time', 0) ->where('lid',7) ->find(); $nobility_info = db::name('vs_nobility') ->field('lid,name,image,pay_price,renew_price,day,power_ids') ->where('delete_time', 0) ->where('lid', 8) ->find(); $old_end_time = 1774848342; $pay_time = 1767278104; $surplus_time = $old_end_time - $pay_time; // echo $surplus_time; if($surplus_time > 0){ //小时 $surplus_time_hour = floor($surplus_time / 3600); //向下取整 // echo $surplus_time_hour;die; // echo ($old_nobility_info['pay_price'] / $nobility_info['day']) / 24;die; $price = $nobility_info['pay_price'] - bcmul($surplus_time_hour * (($old_nobility_info['pay_price'] / $nobility_info['day']) / 24),1,2); //使用时间 $use_time = $old_nobility_info['1767072342'] - time(); $price = $nobility_info['pay_price'] - $old_nobility_info['pay_price'] + ((($old_nobility_info['pay_price'] / $nobility_info['day']) / 24) * $use_time); //价格= //一小时的价格算 } // $end_time = time() + $nobility_info['day'] * 86400; echo $price; // } // $re = model('api/Decorate')->pay_decorate(20150,46,30,9); // print_r($re);die; } //任务金币统计 public function task_coin_count(){ $stime = "1766937600"; $etime = "1767542400"; //获取所有已领取的任务奖励礼包 $where = []; if(!empty($stime)){ $where['a.createtime'] = ['>=', strtotime($stime)]; } if(!empty($etime)){ $where['a.createtime'] = ['<=', strtotime($etime)]; } if(!empty($stime) && !empty($etime)){ $where['a.createtime'] = ['between', [strtotime($stime), strtotime($etime)]]; } if(!empty($stime) && !empty($etime) && $etime<="1767038400"){//2025-12-30 04:00:00 $tasks_bag_details = db::name('vs_gift_bag_receive_log') ->alias('a') ->join('vs_gift_bag_detail b', 'a.parent_id=b.id') ->field('a.createtime,b.type,b.foreign_id,b.quantity,b.gold') ->where(['b.type'=>['in', [1,2]]]) ->where('a.gift_bag_id','>=',18) ->where('a.gift_bag_id','<=',51) ->where($where) ->select(); }else{ $tasks_bag_details = db::name('vs_gift_bag_receive_tasks_log') ->alias('a') ->join('vs_gift_bag_detail b', 'a.parent_id=b.id') ->field('a.createtime,b.type,b.foreign_id,b.quantity,b.gold') ->where(['b.type'=>['in', [1,2]]]) // ->where(['b.type'=>1]) ->where('a.gift_bag_id','>=',18) ->where('a.gift_bag_id','<=',51) ->where($where) ->select(); } $total_reward_price = 0; foreach ($tasks_bag_details as $detail){ if($detail['type'] == 1){ $total_reward_price += $detail['gold'] * $detail['quantity']; }else{ $gift_price = db::name('vs_gift')->where('gid',$detail['foreign_id'])->value('gift_price'); $total_reward_price += $gift_price * $detail['quantity']; } } echo $total_reward_price; } }