From 49e620d9aa0a8351cd2a358f8d9d486a22fd6f09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E9=92=8A?= Date: Mon, 19 Jan 2026 11:45:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=BF=E9=97=B4=E8=A1=A5=E8=B4=B4=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/cron/controller/Subsidy.php | 224 ++++++++++++------------ 1 file changed, 112 insertions(+), 112 deletions(-) diff --git a/application/cron/controller/Subsidy.php b/application/cron/controller/Subsidy.php index 1e31d8e2..4c12aa45 100644 --- a/application/cron/controller/Subsidy.php +++ b/application/cron/controller/Subsidy.php @@ -32,112 +32,13 @@ class Subsidy * 配置:定时脚本每周一 执行 * 配置:/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-09-29'); -//// $week_end_time = strtotime('2025-09-29 23:59:59'); -// -// //获取上周时间 -// $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']; -// } -// $tables = GiftTableManager::getTablesByTimeRange( -// $week_start_time_seach, -// $week_end_time_seach -// ); -// $all_total_price =0; -// if($tables){ -// foreach ($tables as $table_name){ -// //表前缀 -// $table_prefix = config('database.prefix'); -// $table_name = str_replace($table_prefix, '', $table_name); -// $total_price = db::name($table_name) -// ->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'); -// $all_total_price += $total_price; -// } -// } -// $transaction_one = $all_total_price; -// $transaction += $transaction_one; -// -//// $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')->insertGetId($data); -// if ($subsidy_id) { -// echo "工会".$value['id']."生成成功(补贴ID:".$subsidy_id." 补贴金额:".$subsidy_amount.")\n"; -// $data_count++; -// } -// } -// } -// echo $time_value . "工会周补贴数据生成完成-共" . $data_count . "条数据\n"; -// } - 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-09-29'); +// $week_end_time = strtotime('2025-09-29 23:59:59'); + //获取上周时间 $time_value = date('o-W', $week_start_time); echo $time_value . "工会周补贴数据生成开始\n"; @@ -145,10 +46,51 @@ class Subsidy $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'); + //获取所有工会房间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']; + } + $tables = GiftTableManager::getTablesByTimeRange( + $week_start_time_seach, + $week_end_time_seach + ); + $all_total_price =0; + if($tables){ + foreach ($tables as $table_name){ + //表前缀 + $table_prefix = config('database.prefix'); + $table_name = str_replace($table_prefix, '', $table_name); + $total_price = db::name($table_name) + ->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'); + $all_total_price += $total_price; + } + } + $transaction_one = $all_total_price; + $transaction += $transaction_one; + +// $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()) { @@ -181,17 +123,75 @@ class Subsidy 'status' => 0, 'createtime' => time(), ]; -// echo "工会".$value['id']."生成数据:流水金额:{$transaction} 补贴比例:{$subsidy_ratio}% 补贴金额:{$subsidy_amount}\n"; - $subsidy_id = Db::name('vs_guild_subsidy')->insertGetId($data); - if ($subsidy_id) { - echo "工会".$value['id']."生成成功(补贴ID:".$subsidy_id." 补贴金额:".$subsidy_amount.")\n"; - $data_count++; - } + // echo "工会".$value['id']."生成数据:流水金额:{$transaction} 补贴比例:{$subsidy_ratio}% 补贴金额:{$subsidy_amount}\n"; + $subsidy_id = Db::name('vs_guild_subsidy')->insertGetId($data); + if ($subsidy_id) { + echo "工会".$value['id']."生成成功(补贴ID:".$subsidy_id." 补贴金额:".$subsidy_amount.")\n"; + $data_count++; + } } } echo $time_value . "工会周补贴数据生成完成-共" . $data_count . "条数据\n"; } +// 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'))); +// //获取上周时间 +// $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')->insertGetId($data); +// if ($subsidy_id) { +// echo "工会".$value['id']."生成成功(补贴ID:".$subsidy_id." 补贴金额:".$subsidy_amount.")\n"; +// $data_count++; +// } +// } +// } +// echo $time_value . "工会周补贴数据生成完成-共" . $data_count . "条数据\n"; +// } + /* * 生成房间补贴数据 * 配置:定时脚本每周一 执行