diff --git a/application/api/model/Guild.php b/application/api/model/Guild.php index 2afca90..0630b87 100644 --- a/application/api/model/Guild.php +++ b/application/api/model/Guild.php @@ -610,8 +610,8 @@ class Guild extends Model //规则 $data['rule'] = get_system_config_value('web_site').'/api/Page/page_show?id=15'; //上周流水 - $week_start = date('Y-m-d', strtotime('last monday')); - $week_end = date('Y-m-d', strtotime('last monday +6 days')); + $week_start = date('Y-m-d 00:00:00', strtotime('last week Monday')); + $week_end = date('Y-m-d 23:59:59', strtotime('last week Monday +6 days')); $guild_subsidy = db::name('vs_guild_subsidy') ->where(["guild_id"=>$guild_id,'start_time' => $week_start, 'end_time' => $week_end]) ->find(); @@ -622,18 +622,32 @@ class Guild extends Model $data['list'][0]['status_str'] = isset( $guild_subsidy['status'])&& $guild_subsidy['status']==1 ? "已发放" : "未发放"; //本周流水 //本周的第一天 - $week = strtotime(date('Y-m-d', strtotime('this week Monday'))); - $guild_user = db::name('vs_guild_user')->where(['guild_id' => $guild_id,'status'=>1,"delete_time"=>null])->select(); - $guild_user_ids = array_column($guild_user,'room_id'); - $total_transaction = db::name('vs_give_gift') - ->where(['from'=>2,'from_id' => ['in',$guild_user_ids],'createtime' => ['between', [$week, time()]]]) - ->sum('total_price'); + $week = strtotime(date('Y-m-d 00:00:00', strtotime('this week Monday'))); + $guild_user = db::name('vs_guild_user')->where(['guild_id' => $guild_id])->select(); + $transaction = 0; + foreach ($guild_user as $k => $v){ + $week_start_time_seach = $week; + $week_end_time_seach = time(); + if($v['createtime'] && $week_start_time_seach < $v['createtime']){ + $week_start_time_seach = $v['createtime']; + } + 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; + + } + $total_transaction = $transaction; $ss = 0; if($total_transaction){ //根据工会流水 获取补贴比例 单位% - $subsidy_config = db::name('vs_guild_subsidy_config')->where('start_amount <= '. $total_transaction) - ->where('end_amount > '. $total_transaction)->getField('subsidy_ratio'); - $ss = $total_transaction * ($subsidy_config / 100); + $subsidy_config = db::name('vs_guild_subsidy_config')->where('end_amount >= '. $total_transaction) + ->where('end_amount > '. $total_transaction)->value('subsidy_ratio'); + $ss = round($total_transaction * ($subsidy_config / 100),2) ; } //待开发 $data['list'][1]['name'] = "本周流水"; @@ -754,9 +768,15 @@ class Guild extends Model $start_time_all = strtotime($start_time." 00:00:00"); $end_time_all = strtotime($end_time." 23:59:59"); } + if($value['createtime'] && $start_time_all < $value['createtime']){ + $start_time_all = $value['createtime']; + } + if($value['quit_time'] && ($end_time_all > $value['quit_time'])){ + $end_time_all = $value['quit_time']; + } $transaction = db::name('vs_give_gift') ->where('from_id',$value['room_id']) - ->where(['from'=>2,'createtime' => ['between', [$start_time_all, $end_time_all]]]) + ->where(['from'=>['in',[2,3,6]],'createtime' => ['between', [$start_time_all, $end_time_all]]]) ->sum('total_price'); $total_transaction = $total_transaction+$transaction; } @@ -775,14 +795,15 @@ class Guild extends Model $start_time = $add_guild_time; $end_time = time(); } else{ - if(strtotime($start_time) < $add_guild_time){ - $start_time = $add_guild_time; - }else{ - $start_time = strtotime($start_time); - } $start_time = $start_time; $end_time = strtotime($end_time." 23:59:59"); } + if($v['createtime'] && $start_time_all < $v['createtime']){ + $start_time = $v['createtime']; + } + if($v['quit_time'] && ($end_time_all > $v['quit_time'])){ + $start_time = $v['quit_time']; + } $room_info = db::name('vs_room')->where(['id'=>$v['room_id'],'room_status'=>1,'delete_time'=>0])->find(); if($room_info){ $room_data[$i]['room_id'] = $room_info['id']; @@ -791,7 +812,7 @@ class Guild extends Model $room_data[$i]['room_cover'] = localpath_to_netpath($room_info['room_cover']); $room_data[$i]['total_price'] = db::name('vs_give_gift') ->where('from_id',$v['room_id']) - ->where(['from'=>2,'createtime' => ['between', [$start_time, $end_time]]]) + ->where(['from'=>['in',[2,3,6]],'createtime' => ['between', [$start_time, $end_time]]]) ->sum('total_price'); $i++; } diff --git a/application/cron/controller/Subsidy.php b/application/cron/controller/Subsidy.php index e71df85..8f091af 100644 --- a/application/cron/controller/Subsidy.php +++ b/application/cron/controller/Subsidy.php @@ -30,10 +30,10 @@ class Subsidy */ public function createGuildSubsidyData(){ //获取上周第一天时间 - $week_start_time = strtotime('last monday'); - $week_end_time = strtotime(date('Y-m-d 23:59:59',strtotime('last sunday'))); - // $week_start_time = strtotime('2025-08-11'); - // $week_end_time = strtotime('2025-08-17 23:59:59'); + $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); @@ -43,12 +43,24 @@ class Subsidy $data_count = 0; foreach ($guild_list as $key => $value) { //获取所有工会房间ID - $room_ids = db::name('vs_guild_user')->where('guild_id', $value['id'])->field('room_id')->select(); - $room_ids = array_column($room_ids, 'room_id'); - $transaction = db::name('vs_give_gift') - ->whereIn('from_id',$room_ids) - ->where(['from'=>['in',[2,3,6]],'createtime' => ['between', [$week_start_time, $week_end_time]]]) - ->sum('total_price'); + $guild_user_data = db::name('vs_guild_user')->where('guild_id', $value['id'])->field('room_id,createtime,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['createtime'] && $week_start_time_seach < $v['createtime']){ + $week_start_time_seach = $v['createtime']; + } + 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()) { @@ -81,6 +93,7 @@ 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";